92

我从我的 JSP 页面上的一个对象中获得了一个变量:

<%= ansokanInfo.getPSystem() %>

变量的值是正确的 NAT,我想为这个值应用某些页面元素。如何使用标签来了解案例?我尝试了类似的东西

<c:if test = "${ansokanInfo.getPSystem() == 'NAT'}">      
   process  
</c:if> 

但上面没有显示任何内容。我该怎么做?或者我也可以使用scriptlet,即

<% if (ansokanInfo.getPSystem().equals("NAT"){ %>
process
<% } %>

感谢您的任何回答或评论。

4

4 回答 4

151

尝试:

<c:if test = "${ansokanInfo.PSystem == 'NAT'}">

JSP/Servlet 2.4(我认为是版本号)不支持 EL 中的方法调用,只支持属性。最新的 servlet 容器确实支持方法调用(即 Tomcat 7)。

于 2012-04-17T11:11:06.850 回答
39
<c:if test="${ansokanInfo.pSystem eq 'NAT'}">
于 2012-04-17T11:13:52.567 回答
16

我认为其他答案错过了有关在 EL 表达式中使用的属性名称的一个重要细节。从方法名称转换为属性名称的规则在“Introspector.decpitalize”中指定,它是 Java bean 标准的一部分:

这通常意味着将第一个字符从大写转换为小写,但是在(不寻常的)特殊情况下,当有多个字符并且第一个和第二个字符都是大写时,我们不理会它。

因此“FooBah”变为“fooBah”,“X”变为“x”,但“URL”仍为“URL”。

因此,在您的情况下,JSTL 代码应如下所示,请注意大写“P”:

<c:if test = "${ansokanInfo.PSystem == 'NAT'}">
于 2012-04-17T11:25:26.337 回答
5

您可以使用小脚本,但是,这不是要走的路。现在 JSP 文件中的内联脚本或 JAVA 代码被认为是一个坏习惯。

您应该多阅读一下 JSTL。如果 ansokanInfo 对象在您的请求或会话范围内,则像这样打印对象(toString() 方法): ${ansokanInfo} 可以为您提供一些基本信息。${ansokanInfo.pSystem} 应该调用对象的 getter 方法。如果这一切正常,你可以使用这个:

<c:if test="${ ansokanInfo.pSystem  == 'NAT'}"> tataa </c:if>
于 2012-04-17T11:14:17.863 回答