我在PF论坛上问过这个问题,但似乎没有人想回答,所以我尽管我会在这里尝试我的运气。JSF Primefaces TabView问题
我有一个用户界面:重复一遍,当它在一个TabView中的Ajax调用后没有被正确更新。
简单的场景是我有一个用户界面:重复指向一个ArrayList(ArrayList包含简单的pojos与一个字符串)。在这里我有一个h:inputText,它的值是pojo的String getter/setter。 ui:repeat包含在h:panelGroup中。我使用p:commandButton来运行一个动作来更新ArrayList(只需向它添加一些对象给该String的Math.random值),然后更新h:panelGroup。 ArrayList中的更新值不反映在ui:重复输入字段中。这只会影响输入字段,因为outputText字段会正确更新。另外,如果我对p:dataTable执行相同操作,则输入字段会正确更新。如果我删除Tabview和Tab标签,它工作正常。
因为它在删除标签时起作用,所以我只能假设这是一个错误,并不是为了像这样工作。如果有人可以确认是否这样或者是否有可行的解决方法。我需要使用ui:repeat,因为我的字段不是表格格式。这只是从PF 2.2迁移以来才发生的。我目前在PF 3.1,Weblogic 10.3.4和Mojarra 2.0.4上
<p:tabView>
<p:tab title="Test">
<h:form prependId="false">
<p:commandButton id="testStringCheck"
value="Test String Check"
process="@form"
update="testPanel"
action="#{testBean.generateVOwithRandomStrings}">
</p:commandButton>
<h:panelGroup id="testPanel" layout="block">
<ui:repeat value="#{testBean.voList}" var="entry">
<h:outputText value="#{entry.randomString}"/>
<p:inputText style="display:block;"
value="#{entry.randomString}"
size="15">
</p:inputText>
</ui:repeat>
</h:panelGroup>
</h:form>
</p:tab>
</p:tabView>
感谢您的回复,但这并未解决问题。我已经尝试过h:commandButton和pf版本。 – andyfinch 2012-02-07 16:11:46
@andyfinch您是否尝试删除进程属性?这可能没有必要。 – 2012-02-07 16:31:26
它是否默认为表单呢?即使这样做,我仍然会将其添加为可读性。 – andyfinch 2012-02-08 08:57:04