我需要进行验证以查看是否应该在JSP中显示一件事或另一件事。我尝试在JavaScript中进行此验证,因为我不想在jsp中创建巨大的if语句:
var canEdit = false;
var varA = <=% JavaClass.A =%>
var varB = <=% JavaClass.B =%>
if (varA == document.myForm.paramA && varB == document.myForm.paramB)
{
canEdit = true;
}
我需要执行以下操作:
<c:choose>
<c:when test="${canEdit}">
...do something
</c:when>
<c:otherwise>
... do another thing
</c:otherwise>
</c:choose>
但是,似乎JSP无法找到该变量(我也尝试过使用“ param.canEdit”,request.getParameter(“ canEdit”)),因此我尝试在scriptlet中使用tag以便引用JavaClass中的枚举:
<c:set var="myVar" value="<%= JavaClass.A =%>"/>
但是我收到一条错误消息,说TLD不允许在value属性中使用表达式,所以我也不能使用它。
所以最后我发现自己在做这样的事情:
<c:choose>
<c:when test="${myForm.paramA eq 'A' && myForm.paramB eq 'B'}">
...do something
</c:when>
<c:otherwise>
... do another thing
</c:otherwise>
</c:choose>
因此很显然,一旦JavaClass.A的值更改为另一个,就会出错。
我最后的希望是用Java进行验证,并将canEdit变量作为ActionForm中的属性传递(我正在使用Struts 1)。
是否可以将JavaScript变量传递给JSTL验证?
谢谢。