输入值中的EL条件语句会导致Set操作出现非法语法



我最近将我的web应用程序升级到JSF 2.0(MyFaces 2.0.9),并使用tomcat 6(Servlet 2.5容器)。

以前(在升级到JSF2之前)在JSP文件中,我有一些语句,例如:

    <h:selectOneMenu id="country"
           value="#{myBean.countrySelectionControl ? (empty myBean.restrictedCountry ? '' : myBean.restrictedCountry)  : myBean.countryCode}"
           onchange="submit()"
           disabled="#{myBean.countrySelectionControl}">
            <f:selectItem itemValue="" itemLabel="------------------Select-----------------" />
            <f:selectItem itemValue="here" itemLabel="Here" />
            <f:selectItem itemValue="there" itemLabel="There" />
    </h:selectOneMenu>

但自从升级以来,这些语句导致了以下错误:

错误:org.ax4jsf.webapp.BaseXMLFilter-筛选器链中出现异常javax.servlet.ServletException:/jsp/CrudUser.jsp(79,9)'#{myBean.countrySelectionControl

现在我知道我可以把逻辑移回Backbean,但就在这样做之前,我想检查一下是否有其他选择,并知道在这种情况下什么是"最佳实践"。

在java代码(模型+控制器)中保留尽可能多的逻辑,而不是在模板(视图)中保留逻辑,这是一条通用的经验法则。您在xhtml中有相当复杂的逻辑,因此将其迁移到bean将符合此规则。

最新更新