dynamic - Primefaces TabView 不维护 selectOneMenu 值

标签 dynamic jsf-2 primefaces lazy-loading required

嗨,我有一个primefaces tabView 看起来像这样

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html" xmlns:p="http://primefaces.org/ui">
    <h:head></h:head>
    <h:body>
        <p:messages />
        <h:form id="form">
            <p:tabView dynamic="true">
                <p:tab title="Tab">
                    <p:inputText required="true" value="value"></p:inputText>
                </p:tab>
                <p:tab title="Select">
                    <p:selectOneMenu value="#{dummyController.selectedValue}" id="select" required="true" requiredMessage="Select is required">
                        <f:selectItem itemValue="1" itemLabel="asd"></f:selectItem>
                        <f:selectItem itemValue="2" itemLabel="qwe"></f:selectItem>
                        <f:selectItem itemValue="3" itemLabel="zc"></f:selectItem>
                    </p:selectOneMenu>
                    <p:message for="select" />
                </p:tab>
                <p:tab title="Tab">
                    <p:inputText required="true" value="value"></p:inputText>
                </p:tab>
            </p:tabView>
            <h:commandButton action="#{dummyController.submit}" />
        </h:form>
    </h:body>
</ui:composition>

它是 Controller
import java.io.Serializable;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;

@ManagedBean
@ViewScoped
public class DummyController implements Serializable {

    private static final long serialVersionUID = 1L;
    private int selectedValue;

    public void submit() {

    }

public int getSelectedValue() {
    return selectedValue;
}

public void setSelectedValue(int selectedValue) {
    this.selectedValue = selectedValue;
}

}

它有一个奇怪的行为,请按照 tp 重现的步骤操作:
  • 打开“选择”选项卡
  • 打开其他标签
  • 按两次提交

  • 第一次按下什么都没有发生,下一次按下会触发选择所需的消息,尽管它总是有一个值

    请告知是否缺少某些内容或是否有任何解决方案

    最佳答案

    不幸的是,执行 p:tabViewdynamic="true"是 buggy 。各种问题:http://code.google.com/p/primefaces/issues/list?can=2&q=tabView+dynamic&colspec=ID+Type+Status+Priority+TargetVersion+Reporter+Owner+Summary&y=5000&cells=tiles但受影响最大的是 p:selectOneMenu 等组件.

    我在我自己的项目中遇到过这个问题 - 选择列表中的值没有提交,如果它们在另一个选项卡上处于事件状态。解决办法是-不要使用动态标签 ,只要它们不会被修复。里面的bug太多了。

    另一件不起作用的事情是从 ajax 事件 onTabChange 更新选项卡 View .

    关于dynamic - Primefaces TabView 不维护 selectOneMenu 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17395832/

    相关文章:

    java - Groovy:动态添加具有特定签名的方法

    c# - LINQ 到存储过程。我可以使用动态参数列表来调用 SP,而不是强类型化它们吗?

    css - 根据 PrimeFaces 数据表中的字符串更改列高

    jsf - 验证错误值无效

    css - p :selectbooleancheckbox is moving when slected in a p:dataTable

    actionscript-3 - 如何判断一个 Actionscript 对象是否具有某个动态属性?

    java - 列出 jar 文件中的类

    javascript - 从服务器请求 JSON 对象?

    java - 单击列本身中的 HtmlCommandButton 即可删除 HtmlColumn

    java - Spring 3.1 实现中的 @Cacheable 与 JSF 不兼容?