考虑一个虚拟情况:
<h:form id="wrapperForm">
<h:panelGroup id="rowsContainer">
<h:dataTable id="rowsTable" value="#{bean.rows}" var="row" >
<h:column>
<h:commandButton value="Click me to update (#{component.parent.parent.parent.clientId})">
<f:ajax render=":#{component.parent.parent.parent.clientId}" />
</h:commandButton>
</h:column>
</h:dataTable>
</h:panelGroup>
</h:form>
单击按钮后,id=rowsContainer
获取的内容将成功更新。
但是,如果我在ui:repeat
此处添加,它将不再起作用:
<h:form id="wrapperForm">
<ui:repeat id="blocksRepeat" var="block" value="#{bean.blocks}">
<h:panelGroup id="rowsWrapper">
<h:dataTable id="rowsTable" value="#{block.rows}" var="row" >
<h:column>
<h:commandButton value="Click me 2 update (#{component.parent.parent.parent.clientId})">
<f:ajax render=":#{component.parent.parent.parent.clientId}" />
</h:commandButton>
</h:column>
</h:dataTable>
</h:panelGroup>
</ui:repeat>
</h:form>
相反,它得到:
<f:ajax> contains an unknown id ':wrapperForm:blocksRepeat:0:rowsWrapper' - cannot locate it in the context of the component j_idt363
但是,该html" target="_blank">组件确实具有该ID,因此EL应该没问题。不知何故ui:repeat
打破了案件。是否有可能在实际循环之前尝试评估EL?
您如何rowsWrapper
从dataTable中引用元素?
注意:我最近询问了ui:repeat中奇怪的dataTable命名问题,事实证明这是一个bug。这个问题不应该然而,因为我是一个panelGroup中内包装DataTable中的建议涉及到的是。
实际上有两件事出了问题:
1)ui:repeat坏了
正如BalusC在问题评论中所回答的那样,由于Mojarra中的错误,第一个问题(再次出现)发生了。ui:repeat
甚至包装h:dataTable
没有帮助的包装容器似乎也是如此损坏。
正如BalusC所建议的,一种解决方法是使用h:dataTable而不是ui:repeat
。它将提供不方便的(<table>
)HTML,但可以使用。当向内部迭代中添加行或从内部迭代中删除行时,这消除了一些奇怪的问题。
注意:关于ui:repeat
Mojarra 2.0.3的某些问题似乎已解决,但并非全部。
2)引用只是失败
即使有h:dataTable
解决方法,h:dataTable
也无法从内部按钮对内部的引用。由于没有ui:repeat
使用,这必须是数据表的内部问题。目前没有任何解决方案,因此我也针对这种行为提交了罚单。
JSF为开发人员提供了强大的功能来定义他们自己的自定义组件,可用于呈现自定义内容。 定义自定义组件 在JSF中定义自定义组件的过程分为两步。 步 描述 1a 创建资源文件夹。 使用复合命名空间在resources文件夹中创建xhtml文件。 1b 使用复合标签composite:interface, composite:attribute和composite:implementation,来定义复
JSF提供了一个名为DataTable的丰富控件来呈现和格式化html表。 DataTable可以迭代一个集合或值数组来显示数据。 DataTable提供了以简单方式修改其数据的属性。 HTML标头 <html xmlns = "http://www.w3.org/1999/xhtml" xmlns:h = "http://java.sun.com/jsf/html"> </h
h:dataTable标签用于以表格方式显示数据。 JSF标签 (JSF Tag) <h:dataTable value = "#{userData.employees}" var = "employee" styleClass = "employeeTable" headerClass = "employeeTableHeader" rowClasses = "employee
问题内容: 我目前正在尝试从用C#编写的WPF应用程序中的数据库中检索记录。我正在使用SQL数据读取器,它似乎可以正常连接,但以下内容给了我NullReferenceException: 同样,我似乎正在连接到数据库,但是如果我通过调试器运行,则数据表似乎不会被填充。 我的连接字符串,以防万一: 我当前使用的是带有两个记录的测试数据库,而不是最终数据库。我尝试使用Transact-SQL编辑器,但
我的问题是图表包装器的“getDataTable”函数没有“addrow”函数。它似乎返回的是DataView而不是DataTable。我不想保留我的数据的引用,因为它应该在包装中!无论如何,任何帮助都是欢迎的。
问题内容: 我目前正在使用Page_Load中的以下代码创建和读取DataTable 我想知道如何转换此代码,以便它从SQL查询中读取?我正在尝试下面的代码,但不确定如何连接它们,以便页面加载中的数据表使用下面的SQL命令填充。 我被困在: 我希望成为 问题答案: 您需要修改方法,并在其中添加“实验”代码,然后返回。