2013-11-14 6 views
2

매우 빠른 질문입니다. 누군가이 코드가 작동하지 않는 이유를 설명 할 수 있습니까?Struts 로직 태그가 작동하지 않습니다.

<%@ taglib prefix="logic" uri="/WEB-INF/struts-logic.tld" %> 

<% 
    int myValue= 2; 
%> 

myValue: <%=myValue%> 
<br/> 
<logic:equal name="myValue" value="2" scope="session"> 
    logic:equal works! 
</logic:equal> 

는 나는 그것을 분명 뭔가 될 것 아니까 여전히

는 아주 실망 작동하지 않습니다되는 문자열에 myValue를 변경할 경우에도 마찬가지입니다. 미리

감사

KS


예 작업!

<%@ taglib prefix="logic" uri="/WEB-INF/struts-logic.tld" %> 

<% 
    request.setAttribute("myValue", 2); 
%> 

myValue - <%=request.getAttribute("myValue")%>]] 

<br/> 
<logic:equal name="myValue" value="2" scope="request"> 
    logic:equal works! 
</logic:equal> 

답변

2
<logic:equal name="myValue" value="2" scope="session"> 

이 태그는 "myValue"라는 이름의 세션 속성을 찾습니다. "myValue"라는 로컬 변수가 아닙니다.

진짜 질문은 왜 공식적으로 포기 된 프레임 워크의 일부인 JSTL에 찬성하여 반대로 표시되는 태그 라이브러리를 사용하고 있습니까?

+0

은 '요청'으로 범위를 변경하지만 여전히 나를 위해 작동하지 않습니다 스트럿츠 태그와 함께 JSTL을 사용하는 것이 가능하다. – Casper

+2

나는 특히 JSTL에 찬성하여 더 이상 사용되지 않는 라이브러리를 사용하지는 않지만 내가 일하는 회사는 그렇다. 그래서 나는 나에게 주어지는 도구들을 가지고 간다. – Casper

+0

요청 범위를 변경하면 "myValue"라는 로컬 변수가 아니라 "myValue"라는 요청 속성을 찾습니다. 스크립틀릿 코드는 다음을 수행해야합니다 :'request.setAttribute ("myValue", 2)'. 그러면 "myValue"라는 요청 속성이 생성됩니다. –

0

모든 범위에서 스크립트 릿 변수에 액세스 할 수 없습니다. 스크립틀릿 표현식에서만 사용할 수 있습니다. 스트럿츠에서

<c:set var="myValue" value="2"/> 
<c:if test="${myValue == 2}"> 
    if test works! 
</c:if> 
관련 문제