2010-04-27 3 views
0

저는 Spring Roo 프로젝트를 만들었습니다. 모든 것이 잘 보입니다. 이제 텍스트 입력과 버튼이있는 양식을 index.jspx에 추가하고 싶습니다. 이 양식은 내 ToDo 클래스에 정적 필드 currentUser을 변경합니다. 따라서 다음을 추가합니다.Jsp 정적 가져 오기

<form> 
    <%@ page import="static com.mypack.domain.ToDo.*" %> 
    <label for="_username_id">My name is:</label> 
    <% currentUser = request.getParameter("username"); %> 
      <input type="text" id="username" name="username" maxlength="30" path="username" size="0" value="<%= currentUser %>"/> 
      <input type="submit"/> 
</form> 

어딘가에 있습니다. 그리고 지금은 작동하지 않습니다 :

This page contains the following errors: 

error on line 6 at column 20: StartTag: invalid element name 
Below is a rendering of the page up to the first error. 

function readCookie(name) { var nameEQ = name + '='; var ca = document.cookie.split(';'); for(var i=0;i 

위의 내용을 주석으로 작성하면 올바르게 작동합니다. 뭐가 잘못 되었 니? JSP 페이지에서 클래스의 정적 필드에 값을 쓰는 방법이 있습니까? 이 문제를 어떻게 해결할 수 있습니까?

답변

2

그냥 EL을 사용하십시오. 요청 매개 변수는 ${param.name}에서 사용할 수 있습니다.

<input type="text" name="username" value="${param.username}" /> 

XSS도 고려해야합니다. 이를 위해 JSTL fn:escapeXml을 사용

<input type="text" name="username" value="${fn:escapeXml(param.username)}" /> 

스크립틀릿 (그 <% %> 일)를 사용하지 마십시오. 그들은 bad practice으로 간주됩니다.

ToDo.currentUser이 정적 필드라는 점도 좋지 않습니다. 이 값은 웹 응용 프로그램의 모든 요청/세션에서 공유됩니다. 방문자마다 다른 방문자에게 동일한 가치가 적용되며 수정 된 내용은 모든 방문자에게 반영됩니다. 너가 원하는게 그거야?

+0

그래서 EL을 사용하여 ToDo.currentUser 필드에 내 값을 쓰려면 어떻게해야합니까? – folone

+0

아니면 컨트롤러에서'$ {param.username} '에 어떻게 접근합니까? – folone

+0

일반적으로 서블릿을 통해 양식을 제출하고 처리합니다. 서블릿에서 요청을 제어/전처리/후행 처리하고 Java 코드를 자유롭게 작성할 수 있습니다. 다음은 JSP/Servlet/MVC의 기본 개념을 배우는 데 유용한 자습서입니다. http://courses.coreservlets.com/Course-Materials/csajsp2.html 다음 단계로 위에 빌드 된 MVC 프레임 워크를 사용할 수 있습니다 Servlet API를 사용하면이 작업을보다 투명하게 처리 할 수 ​​있습니다. 봄 Roo 그들 중 하나입니다. http://www.springsource.org/roo에서도 자습서/문서를 읽었습니까? – BalusC

관련 문제