是否更好地定义条件变量或不使用变量并每次检查条件?

时间:2016-04-23 01:55:23

标签: java spring jsp jstl

检查条件一次,定义变量,然后使用这些变量是否更好?

<c:if test="${someCondition}">
    <c:set var="varOne" value="1" />
    <c:set var="varTwo" value="2" />
    <c:set var="varThree" value="3" />
    <c:set var="varFour" value="4" />
    <c:set var="varFive" value="5" />
</c:if>

${varOne}
...
${varTwo}
...
${varThree}
...
${varFour}
...
${varFive}

或者最好不使用变量并在每次需要输出值时检查条件?

${someCondition ? "1" : ''}
...
${someCondition ? "2" : ''}
...
${someCondition ? "3": ''}
...
${someCondition ? "4": ''}
...
${someCondition ? "5": ''}

1 个答案:

答案 0 :(得分:1)

如果要在页面中的许多地方显示每个变量,则首选(当检查条件一次时)将更为可取。因为它可以让你避免重复代码。

如果您只展示一次变量,则不需要额外的<c:if,第二种方法就可以了。因为它更简单,更易读。

当然,这只是我的意见,但我更愿意将此逻辑移至控制器:

@Controller
public class MyController{

    @RequestMapping("/my-mapping")
    public String showView(ModelMap model){
        model.addAttribute("varOne", someCondition?1:null);
        model.addAttribute("varTwo", someCondition?2:null);
        //etc ...
        return "view-name";
    }
}

在这种情况下,您的视图将保持清晰和简单,并且所有业务逻辑将在一个位置(顺便说一下,当您将null作为值传递时,JSP将不会显示任何内容。