2011-12-10 1 views
0

서블릿에 전달하기 전에 doFilter을 통해 요청에 속성을 추가하려고하므로 JSTL의 값이 설정됩니다. 필터에 req.setAttribute("b", "blah") 만 넣으면되지만 JSTL 파일에는 설정되지 않은 것 같습니다. 어떻게하면 좋을까요?서블릿에서 사용할 수없는 서블릿 doFilter setAttributes

+0

관련 필터 코드와 JSP 단편을 제공하십시오. –

+0

올바르게 처리하고 있습니다. 요청에 대한 속성을 설정하고 jstl을 통해 JSP에서 사용하십시오. – rmarimon

답변

-2

문제는 doFilter 방법은 setAttribute 메소드가 하나 인 ServletRequestHttpServletRequest 대신 사용한다는 것이다. 대부분의 필터는 다음과 같습니다.

public void doFilter(ServletRequest servletRequest, 
        ServletResponse servletResponse, 
        FilterChain chain) throws IOException, ServletException { 

    HttpServletRequest request = (HttpServletRequest) servletRequest; 
    HttpServletResponse response = (HttpServletResponse) servletResponse;                  

    // do what you must... 

    chain.doFilter(servletRequest, servletResponse); 

} 
+1

나는 OP가 그들이'req.setAttribute()'를하고 있다고 말하고 있지만 그 속성은 JSP 파일에 존재하지 않는다고 생각합니다; 이 문제가 어떻게 해결되는지 확실하지 않습니다. –

+0

이것은 말도 안돼. 형변환은 객체 자체를 변경하지 않고 참조 유형 만 변경합니다. 메소드 호출은 다르게 동작하지 않습니다. – BalusC

+0

@ BalusC 첫 번째 질문에서 캐스팅이 수행되지 않은 경우 발생하는'request.setAttribute'를 사용할 수 없다는 사실을 지적했습니다. – rmarimon

0

코드를 보지 않고 근본 원인을 찾아내는 것은 어렵습니다. 몇 가지 원인이있을 수 있습니다.

  • 같은 요청을 계속하는 대신 속성을 설정 한 후 리디렉션을 보내고 있습니다.
  • 잘못된 이름으로 속성에 액세스하고 있습니다 (대소 문자를 구별하십시오!).
  • 잘못된 방식으로 속성에 액세스하고 있습니다.
  • 요청 처리에서 속성이 더 아래쪽에서 대체되었습니다.
  • 값이없는 같은 이름의 페이지 범위 속성이 있습니다.
  • 결과를 잘못 해석하는 것입니다.
  • 그런데

는 "JSTL 파일"같은 것은 없다. 아마도 "JSP 파일"을 의미했을 것입니다.

관련 문제