![](/img/trans.png)
[英]How to avoid redundant method calls when checking the result first for null?
[英]How to avoid checking for null in jsp
我想使用JSP页面返回动态xml。我面临的问题是我已经建模了一些值为null的值,当它们为null时我不会显示它们。 因此,我可以执行以下操作:
if(ampApInfo.getColourcd().equals(null)){ %>
<ColourCd><%= ampApInfo.getColourcd() %></ColourCd>
<%} else if(ampApInfo.getSzWeightColourcd().equals(null)){ %>
<SzWeightColourcd><%= ampApInfo.getSzWeightColourcd() %></SzWeightColourcd>
<%}%> //and so forth
但这使我的代码很难看并且不切实际。 有办法避免这种情况吗? 能否请您提供一个示例,或提供给我一个示例。 非常感谢。
丑陋是由使用老式的scriptlet而不是JSTL / EL引起的 。 使用JSTL,它看起来会更加自我记录(因为它使用类似XML的标记)。 使用EL,您可以使用${}
表示法访问bean属性。
像这样:
<c:choose>
<c:when test="${not empty ampApInfo.colourcd}">
<ColourCd>${ampApInfo.colourcd}</ColourCd>
</c:when>
<c:when test="${not empty ampApInfo.szWeightColourcd}">
<ColourCd>${ampApInfo.szWeightColourcd}</ColourCd>
</c:when>
<c:otherwise />
</c:choose>
(请注意,我倒的条件下,您在打印的元素,如果值是 null
,这违背自己的功能需求)
尝试三元运算符。 另外,我认为您没有错过代码,所以如果您的代码是,
if(ampApInfo.getColourcd() != null){ %>
<ColourCd><%= ampApInfo.getColourcd() %></ColourCd>
<%} else if(ampApInfo.getSzWeightColourcd() != null){ %>
<SzWeightColourcd><%= ampApInfo.getSzWeightColourcd() %></SzWeightColourcd>
<%}%> //and so forth
然后,您将转变为这样。
<%
String str1 = "tag1 data";
String str2 = "tag2 data";
String finalStr = str1 != null ? "<tag1>" + str1 + "</tag1>" : (str2 != null ? "<tag2>" + str2 + "</tag2>" : "");
%>
<%= finalStr%>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.