模板文本正文中不允许使用JSF和EJB#{...}

时间:2011-12-12 20:08:35

标签: templates jsf datagrid ejb

我添加了2个托管bean: ProductController有2个方法:

ist<ProdusDTO> getList()
String update()

和ProductDTO,用于实体产品。

的index.jsp

<%@ taglib prefix="f"  uri="http://java.sun.com/jsf/core"%>
<%@ taglib prefix="h"  uri="http://java.sun.com/jsf/html"%>
<h:dataTable value="#{ProductController.getList()}" var="p">
        <h:column>
            <f:facet name="header">Description</f:facet> #{p.description}
        </h:column>
        <h:column>
            <f:facet name="header">Image</f:facet> #{p.image}
        </h:column>
    </h:dataTable>

    <h2>Adds</h2>
    <h:form>
        <h:panelGrid columns="3">
            Description: <h:inputText value="#{produsDTO.description}" size="100" required="true"></h:inputText>
            Image: <h:inputText value="#{productDTO.image}" size="100" required="true" label="Image"> </h:inputText>
        </h:panelGrid>
        <h:commandButton value="Submit" action="#{ProductController.update()}" />
    </h:form>

当我运行jsp文件时,我收到此错误:

PWC6228: #{...} not allowed in a template text body.

在构建路径中,我包含了jsf-api.jar和jsf-impl.jar(mojjara 1.2_15)

为什么我不能为dataTable组件指定值属性的方法?

感谢。

1 个答案:

答案 0 :(得分:3)

统一表达语言deferred expressions仅在支持它们的自定义标记属性中允许(有关UEL支持,请参阅JSP 2.1)。

这是使用JSP和JSF的限制。延迟表达式必须与控制标记一起使用(例如outputText。)

使用Facelets视图技术解决了这个问题;如果可能,请考虑升级。