2012-09-13 7 views
1

내가 Struts1과 JSP를 사용하고있는 일반 바닐라를 표시하지 않습니다. <bean:write> 태그를 사용하여 양식 속성에 액세스 할 수 있지만 JSTL로는 할 수 없습니다. 왜 안돼? 내 양식은 DynaActionForm입니다.EL 해석 및 생성 된 HTML 출력

이 문은 작동합니다

<c:out value="${myForm.map.origin}"/> 

이 중 하나가 작동하지 않습니다, $ {myForm을 표시

<bean:write name="myForm" property="origin"/> 

이 작동하지 않습니다는 $ {myForm.map.origin} 일반 바닐라를 표시합니다. 원저} 일반 바닐라 :

<c:out value="${myForm.origin}"/> 
+0

왜 struts1을 사용하고 있습니까? –

+0

그것은 레거시 시스템이며 몇 가지 개선 작업을 수행하고 있습니다. 나는 그들이 항상 struts1을 사용 해왔고 시스템을 망가뜨릴 까봐 두려워서 다른 프레임 워크로 변경하고 싶지는 않다고 생각합니다. – Susie

+0

그냥 "origin"으로 시도하십시오 – bhatanant2

답변

4

서블릿/JSP, JSTL 및/또는 web.xml versi 불일치. Servlet 2.3/JSP 1.2에서 EL은 JSTL 1.0의 일부였습니다. Servlet 2.4/JSP 2.0에서 EL은 JSTL에서 JSP로 옮겨졌고 JSTL 1.1은 EL없이 출하되었습니다. web.xml 버전 선언은 현재 사용되는 Servlet/JSP 버전을 나타내며 대상 컨테이너에서 지원해야합니다.

Servlet 2.4/JSP 2.0에서 JSTL 1.0을 사용하거나 Servlet 2.3/JSP 1.2에서 JSTL 1.1을 사용하는 경우이 문제가 발생합니다. 또한 Servlet 2.4/JSP 2.0에서 JSTL 1.1을 사용하고 있지만 web.xml이 Servlet 2.3을 준수한다고 선언되었거나 (또는 ​​버전 선언이 포함되어 있지 않은 경우),이 문제와 정확히 직면하게됩니다.

모두는 our JSTL wiki page에 설명되어 있습니다. 올바른 JSTL 버전에 대한 다운로드 링크와 여기에 맞는 버전 별 web.xml 선언의 예를 찾을 수도 있습니다.

또 다른 원인

당신이 JSP의 상단 또는 web.xml에서 <jsp-config><el-ignored>true</el-ignored></jsp-config><%@page isElIgnored="true"%> 선언을했습니다 것입니다,하지만 간과하기 너무 명백한 원인입니다.

+0

당신은 일반 text.I 내 서블릿 사용 servletContext.getMajorVersion()와 servletContext.getMinorVersion의 버전을 확인하고 I는 각각 2, 5를 가지고 해석되고 $ {}에 대한 첫 번째 가정에 대한 권리입니다. 서블릿 2.5를 사용하고 있다는 뜻입니까? 그렇다면 문제는 다른 것입니까? – Susie

+0

이 웹 응용 프로그램에는 jstl을 사용하고 작동했던 다른 페이지가 있습니다. 문제가있는 것은이 특정 JSP 페이지뿐입니다. 내 web.xml 파일에는 버전에 대한 언급이 없습니다. – Susie

+0

나는 그것을 마침내 풀었다. 내 jsp <% @ page isElIgnored = "true"%>에이 문장이 있는지 물었습니다. 나는하지 않았다. 이 문장을 jsp에 추가했지만 true 값을 false로 변경하면 효과가있었습니다. 일어날 whay를 알기를 원하십니까? – Susie