输入值中的EL条件语句导致设置操作的非法语法

时间:2012-02-29 04:11:36

标签: jsf el

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

以前(在升级到JSF 2之前)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.ajax4jsf.webapp.BaseXMLFilter - 过滤器链中的异常   javax.servlet.ServletException:/jsp/CrudUser.jsp(79,9)'#{myBean.countrySelectionControl? (empty myBean.restrictedCountry?'':myBean.restrictedCountry):myBean.countryCode}'设置操作的非法语法

现在我知道我可以将逻辑移回Backbean,但在此之前,我想检查并查看是否还有其他选择,并知道在这种情况下什么是“最佳实践”。

1 个答案:

答案 0 :(得分:2)

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