2011-05-10 65 views
4

当弹出窗口(pp1)中的保存按钮被点击时,项目列表被更新。 但是当按下项目列表中的更新按钮时,呈现ID:form1:pp1不存在错误,当它被呈现时。如果渲染=“@所有”它的作品,但它不好。 (错误:<f:ajax>包含未知的ID ':Form1中:PP1')jsf 2.0 f:未找到ajax渲染ID

<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> 

回答

0

如果使用prependId=false你panelGroup中的ID是pp1而不是form1:pp1。 (假设您的属性中存在拼写错误“prependID”而不是“prependid”)

+0

亚,它的一个错字..我试过这种方式也..但没有运气 – Amilask 2011-05-10 10:51:57

+0

看在生成的html源代码,并试图找出什么是你的panelGroup的真实ID。 – 2011-05-10 11:00:23

+0

其pp1,我试着渲染=“:pp1”,但结果相同 – Amilask 2011-05-10 11:02:42

6

由于表单上有prependId="false",因此:form1:pp1将不起作用。 pp1将不起作用,因为它然后查找与<ui:repeat>相同范围内的组件,该组件本身就是UINamingContainer组件。

在webbrowser中打开JSF页面,右键单击并选择查看源代码以获取生成的HTML。找到由<h:panelGroup id="pp1">生成的HTML元素。它应该是这个样子

<span id="foo:bar:pp1"> 

您需要使用正是这个ID与:前缀在render属性。

<f:ajax render=":foo:bar:pp1"> 

如果有一个自动生成的ID部分,如j_id0,那么你需要给有问题的父组件的固定ID。

+0

prependId = false,它显示为我应该能够访问使用render =“:pp1”isn是吗?但id仍然找不到该元素 – Amilask 2011-05-11 05:09:32