Java 相等字符串的JSTL if标记

Java 相等字符串的JSTL if标记,java,jsp,websphere,jstl,jsp-tags,Java,Jsp,Websphere,Jstl,Jsp Tags,我从JSP页面上的对象中获得了一个变量: 变量的值是NAT,这是正确的,我想为这个值应用某些页面元素。如何使用标签了解案例?我试过类似的东西 <c:if test = "${ansokanInfo.getPSystem() == 'NAT'}"> process </c:if> 过程 但是上面没有显示任何内容。我该怎么做?或者我也可以使用Scriptlet,即 <% if (ansokanInfo.getPSystem().equal

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

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

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

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

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

过程
谢谢你的回答或评论

试试看:

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

JSP/Servlet2.4(我认为这是版本号)不支持EL中的方法调用,只支持属性。最新的servlet容器确实支持方法调用(即Tomcat7)。


您可以使用Scriptlet,但是,这不是一种方法。现在,JSP文件中的内联scriplets或JAVA代码被认为是一个坏习惯

您应该进一步阅读JSTL。如果Ansokanifo对象在您的请求或会话作用域中,那么像这样打印对象(toString()方法):${Ansokanifo}可以为您提供一些基本信息${ansokanifo.pSystem}应该调用对象getter方法。如果这些都有效,您可以使用:

<c:if test="${ ansokanInfo.pSystem  == 'NAT'}"> tataa </c:if>
tataa

我认为其他答案遗漏了有关EL表达式中使用的属性名称的一个重要细节。将方法名转换为属性名的规则在java bean标准的以下部分中指定:

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

因此,“FooBah”变为“FooBah”,而“X”变为“X”,但“URL”保持为“URL”

因此,在您的情况下,JSTL代码应该如下所示,注意大写字母“p”:

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


我根据Jorn的答案更新了我的答案。我已经放弃了JSP(X)。我使用Mustache()或我自己的模板语言JATL()。如何处理多个字符串?一定有比
更好的方法了,具有命名约定的getter和setter几乎就是javabean的定义。我想我们需要更多关于变量传递到jsp的位置的信息。为了对EL可用,它必须在某个范围内,例如作为请求或pageContext属性。由脚本块创建的局部变量对EL不可用。请详细说明
getPSystem()
ansokanifo
?您是在请求中设置它们还是通过
import
访问它们?IIRC I在请求中设置它们,解决方案(解决方法)是按照BalusC的指示升级websphere,然后更新的版本可以通过标记调用bean方法。在这个问题中,我使用的是标准websphere,以及jsp和jstl能够运行方法之前的某个版本。请查找BalusC告诉我们我使用的websphere版本需要更新的版本才能调用这些方法的地方。那么现在您是否已将应用程序服务器升级到was 8?那个解决方案失败了吗?@SanKrish我现在不使用JSP。我希望它能为您工作,并为更新版本的应用程序服务器进行了更新。
<c:if test = "${ansokanInfo.PSystem == 'NAT'}">