当弹出窗口(pp1)中的"保存"按钮单击时,项目列表会更新.但是当按下项目列表中的更新按钮时,渲染ID:form1:pp1在渲染时不会出现错误.如果做render ="@ all"它可以工作,但它不好.(错误:<f:ajax>
包含一个未知的id':form1:pp1')
<h:form id="form1" prependid=false>
<h:panelGroup id="projects">
<ui:repeat var="action" value="#{dadadada}" varStatus="status">
<h:commandButton value="Save">
//gives id not found error
<f:ajax event="click" execute="@form" render=":form1:pp1" listener="#{fsfsfsfsfs}" />
</h:commandButton>
</ui:repeat>
</h:panelGroup> // project panel group
//popup
<h:panelGroup id="pp1">
<div id="popup2" class="popup_block">
//save button in the popup
<div class="popupBody_save2">
<h:commandButton image="resources/images/saveBtn.gif" value="Save">
<f:ajax event="click" execute="@form" render="projects" listener="#{dfsfssfs}" />
</h:commandButton>
</div>
</div>
</h:panelGroup>
</h:form>
Run Code Online (Sandbox Code Playgroud)
该:form1:pp1
不会工作,因为你必须prependId="false"
在表格上.这pp1
将无法工作,因为它在同一范围内寻找组件,而组件<ui:repeat>
本身就是一个UINamingContainer
组件.
在webbrowser中打开JSF页面,右键单击并查看源代码以获取生成的HTML.找到生成的HTML元素<h:panelGroup id="pp1">
.看起来应该是这样的
<span id="foo:bar:pp1">
Run Code Online (Sandbox Code Playgroud)
您需要使用正是这个ID前缀:
的render
属性.
<f:ajax render=":foo:bar:pp1">
Run Code Online (Sandbox Code Playgroud)
如果存在自动生成的ID部分j_id0
,则需要为相关的父组件提供固定ID.
如果您使用prependId=false
panelGroup 的 idpp1
而不是form1:pp1
. (假设您的属性“prependID”而不是“prependid”中有拼写错误)
归档时间: |
|
查看次数: |
15564 次 |
最近记录: |