2016-06-14 5 views
0

JSP 파일에서 URL 매개 변수를 검색하기 위해 다음을 사용했습니다.이 JSP 파일은 Struts 유효성 검사기로 검증하는 양식이있는 웹 페이지를 나타냅니다 . 폼이 처음로드 할 때 이름 parm 아무 URL 매개 변수가없는 경우"request.getParameter"는 존재하지 않는 URL 매개 변수에 대해 "-1"을 리턴합니다.

<% String tempVal= (String)request.getParameter("parm");%> 

tempVal 매개 변수의 값은 null입니다.
그런 다음 양식에 잘못된 데이터가 포함 된 양식을 제출하고 오류 메시지 확인과 함께 동일한 페이지 (Validate 메서드를 ActionForm 클래스에 입력 한 후)로 왔습니다.
하지만 이번에는 tempVal 매개 변수의 값은 -1입니다.
다음은 ActionForm 클래스의 내 Validate 메소드입니다.

@Override 
public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) 
{ 
    ActionErrors errors = null; 
    errors = super.validate(mapping, request); 
    String temp2 = request.getParameter("param3"); 
    if(temp2 == null){ 
     errors.add("some Error"); 
    } 
    return errors; 
} 

이 동작이 나타나는 이유는 무엇입니까? 미리 감사드립니다.

답변

0

다른 양식으로 요청을 받으려는 경우 URL 매개 변수는 문자열 형식이어야합니다.

하지만 당신의 URL 매개 변수가 문자열 형식이 아닌 경우는 -1을 줄 문자열로 변환 Object에서의 getParameter하려고하고 열 때문에 그때, getAttribute를

여기에 같은 해프닝를 사용하는 것이 좋습니다 것입니다.

첫 페이지

//first page: first.jsp 
    <% request.setAttribute("PAGE", "param");%> 
    <jsp:forward page="/second.jsp"/> 

및 second.jsp :

<%=request.getAttribute("PAGE")%> 

그것은 속성은 매개 변수가 아니라는 것을 알고 매우 중요합니다. 속성의 반환 형식은 Object이며 매개 변수의 반환 형식은 String입니다. getAttribute (String name) 메소드를 호출 할 때 속성이 캐스트되어야한다는 점에 유의하십시오.

또한 서블릿 고유의 특성이없고 세션 매개 변수도 없습니다.

희망이 도움이 될 수 있습니다.

+0

"문자열"에 캐스팅하는 것은 필요하지 않습니다. 이해합니다. ** String tempVal = request.getParameter ("parm"); ** URL 매개 변수를 가져 오는 방법입니다. 여전히이 동작의 이유를 이해할 수 없습니다. . –