我现在因为一个ui:重复的情况而陷入困境。
我正在使用JSF 2.2和Primefaces 5.0
首先是我的代码
我的xhtml
<p:panel styleClass="postPanel">
<ui:repeat id="repeatedId" value="#{bean.posts}"
var="post" varStatus="status">
<h:form styleClass="ws">
<div>
<p:menuButton id="menuShort" value="">
<p:menuitem value="Edit signal" oncomplete="PF('dlg2').show();"
update=":dialog" process="@this"
actionListener="#{bean.editDialog(post)}" />
<p:menuitem value="Assign signal" />
<p:separator />
<p:menuitem value="Delete signal"
onclick="return confirm('Delete #{post.postId}?')"
actionListener="#{bean.deletePostItem(post)}" />
<p:menuitem value="Link to signal" />
</p:menuButton>
</div>
<p:outputLabel value="#{post.description}" />
<div>
<ui:repeat value="#{post.comments}" var="comment">
<h:outputText value="#{comment.com}" />
</ui:repeat>
</div>
<div id="post_#{post.wsPostId}">
<p:inputText styleClass="add" id="add" ajax="true"
onclick="showReply(this)" />
<div>
// here I get the status is not resolved warning, and its not working
<h:inputTextarea styleClass="reply" style="display:none;"
value="#{bean.comments[status.index]}" />
<div>
<p:commandButton styleClass="save" id="savePostBoard"
value="save" ajax="true" style="display:none;" update="@form" />
<p:commandButton styleClass="cancel" id="cancelPostBoard"
value="cancel" onclick="cancelReply(this)" ajax="true"
style="display:none;" update="@form" />
</div>
</div>
</div>
</h:form>
</ui:repeat>
</p:panel>
我的ManagedBean
List<Post> posts;
List<String> comments;
// getter & setter
// additional calls to EJBs for data
我将代码简化到了失败的程度。我在SO上看到了一些示例,您可以在其中访问您在ui:repeat中引用的SAME bean属性,然后使用varStatus索引。
我想要做的只是访问ui中的另一个List(注释):使用varStatus.index重复。
这样做的目的是让仪表板上的每个帖子都有可能对其进行评论。也许那里有更好的解决方案。如果某人有一些更好/更清洁解决方案的提示,那就太棒了。
干杯