Jsf f:ajax渲染引用迭代组件
我有以下结构的xhtml:Jsf f:ajax渲染引用迭代组件,jsf,myfaces,websphere-portal,Jsf,Myfaces,Websphere Portal,我有以下结构的xhtml: <h:form id="frmMain2"> <f:subview id="sub1"> <ui:repeat var="vatId" value="#{someBean.suppliesKeys()}" id="rep1"> <fieldset> <legend>vatId</legend&
<h:form id="frmMain2">
<f:subview id="sub1">
<ui:repeat var="vatId" value="#{someBean.suppliesKeys()}" id="rep1">
<fieldset>
<legend>vatId</legend>
<h:panelGroup id="panel">
<ui:repeat var="item" value="#{someBean.supplies[vatId]}" id="rep2">
<f:subview id="sub2">
<h:commandLink id="command">
${item}
<f:ajax
event="click"
render=":frmMain2:sub1:rep1:0:panel">
</f:ajax>
</h:commandLink>
</f:subview>
</ui:repeat>
</h:panelGroup>
</fieldset>
</ui:repeat>
</f:subview>
</h:form>
请注意,我试图在f:ajax渲染(:frmMain2:sub1:rep1:0:panel)中引用面板的第一次迭代
若我引用了其他内容(在迭代部分之外),例如:frmMain2:sub1:rep1,那个么就会找到组件,portlet就会工作
我找不到如何在“渲染属性”中引用某个迭代组件
在下面的帖子中,这个问题在Mojarra更新版本中被描述为已解决,但Myfaces 2.2.7并没有解决这个问题:
那么,有没有一种方法可以引用我想在f:ajax中呈现的组件?因为您只想呈现第一次迭代,所以您可以创建一个自定义组件、标记或模板来封装您正在迭代的组件作为解决方法:
<fieldset>
<legend>vatId</legend>
<h:panelGroup id="panel">
<ui:repeat var="item" value="#{someBean.supplies[vatId]}" id="rep2">
<f:subview id="sub2">
<h:commandLink id="command">
${item}
<f:ajax
event="click"
render=":frmMain2:sub1:rep1:0:panel">
</f:ajax>
</h:commandLink>
</f:subview>
</ui:repeat>
</h:panelGroup>
</fieldset>
梵蒂德
${item}
然后您可以硬编码第一个选项。下面是一些示例代码(由于我没有关于您的模型数据的所有信息,您肯定需要调整此代码):
<h:form id="frmMain2">
<f:subview id="sub1">
<custom:component id="first" items="#{someBean.supplies[hardcodedFirstKey]}">
<f:ajax event="click" render="@this" />
</custom:component>
<ui:repeat var="vatId" value="#{someBean.suppliesKeys()}" id="rep1">
<custom:component items="#{someBean.supplies[vatId]}" rendered="#{!key eq hardcodedFirstKey}">
<f:ajax event="click" render=":frmMain:sub1:first" />
</custom:component>
</ui:repeat>
</f:subview>
</h:form>
有比2.2.7(2.2.12)更新的版本,尝试过吗?我喜欢你的思维方式和你如何将第一个选项隔离开来。但是,我不需要硬编码的第一个选项。我在示例中这样做只是为了证明语法无效。实际呈现的面板应该是单击的commandLink的父级面板,但却是ui:repeat的子级面板。我考虑使用varStatus中的索引,而不是我将添加到ui:repeat中的零(但如果零不起作用,我就不需要正确的索引)
<h:form id="frmMain2">
<f:subview id="sub1">
<custom:component id="first" items="#{someBean.supplies[hardcodedFirstKey]}">
<f:ajax event="click" render="@this" />
</custom:component>
<ui:repeat var="vatId" value="#{someBean.suppliesKeys()}" id="rep1">
<custom:component items="#{someBean.supplies[vatId]}" rendered="#{!key eq hardcodedFirstKey}">
<f:ajax event="click" render=":frmMain:sub1:first" />
</custom:component>
</ui:repeat>
</f:subview>
</h:form>