我添加了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组件指定值属性的方法?
感谢。
答案 0 :(得分:3)
统一表达语言deferred expressions仅在支持它们的自定义标记属性中允许(有关UEL支持,请参阅JSP 2.1)。
这是使用JSP和JSF的限制。延迟表达式必须与控制标记一起使用(例如outputText。)
使用Facelets视图技术解决了这个问题;如果可能,请考虑升级。