我想使用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
但是这使得我的代码变得丑陋而且不实用。有办法避免吗? 能否请您提供一个如何做到或指向一个的例子。 非常感谢。
答案 0 :(得分:1)
丑陋是由使用旧式 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
时,您正在打印元素,这与您自己的功能要求相矛盾)
答案 1 :(得分:0)
答案 2 :(得分:0)
尝试三元运算符。此外,我认为,您错过了代码,所以如果您的代码是,
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%>