如何避免在jsp中检查null

时间:2012-01-25 12:05:18

标签: java xml 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

但是这使得我的代码变得丑陋而且不实用。有办法避免吗? 能否请您提供一个如何做到或指向一个的例子。 非常感谢。

3 个答案:

答案 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)

if(object1!=null){

do something

}else{

do something else

}

可能重复Avoiding != null statements

答案 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%>