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

Is it better to define condition variables or to use no variables and check the condition each time?

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

<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": ''}

如果您要在页面的许多地方显示每个变量,第一种方法(只检查一次条件)会更可取。因为它可以让你避免重复代码。

如果只显示一次变量,则不需要额外的 <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 将不显示任何内容).