参数在调用函数时设置为null

时间:2014-04-07 07:47:02

标签: jsf primefaces

我有一些包含某些字段的表格。问题是按下保存按钮时播放器和serieType设置为null。 selectoneMenu项目在使用时已正确设置。只有按下按钮时才会将它们设置为空。

    <p:dataTable id="scores" var="aScore" value="#{serviceScoreDB.scoresList }" 
     border="1">

        <p:column id="playerName">
            <f:facet name="header">Namn</f:facet>
            <p:commandLink value="#{aScore.playerName}">

            </p:commandLink>
        </p:column>

        <p:column id="player">
            <f:facet name="header">Spelare</f:facet>
             Spelare
            <p:selectOneMenu value="#{player}"
                converter="playerConverter" id="playerList">
            <f:selectItem itemLabel="---" noSelectionOption="true" />
            <f:selectItems value="#{servicePlayer.allPlayers}"
             var="n"
             itemValue="#{n}"
             itemLabel="#{n.combinedName}"
             itemLabelEscaped="true"/>
              <p:ajax event="change" execute="@this" listener="#{serviceHCP.getClubs(player) }" update="test" 
              render="test" />
            </p:selectOneMenu>                  

        </p:column>

        <p:column id="club">
            <f:facet name="header">Klubb</f:facet>
            <h:outputText  id="test" value="#{serviceHCP.myCurrentClub.name}"></h:outputText>       
        </p:column>

        <p:column id="serieType">
            <f:facet name="header">Spelare</f:facet>
                <p:selectOneMenu value="#{serviceSerieType.mySerieType}" 
                converter="serieTypeConverter" id="serieTypeList">
                <f:selectItem itemLabel="---" noSelectionOption="true" />
                <f:selectItems value="#{serviceSerieType.serieTypes}"
                 var="st"
                 itemValue="#{st}"
                 itemLabel="#{st.serie_type}"
                 itemLabelEscaped="true"/>
                 <p:ajax event="change" execute="@this" update="sType"/>
            </p:selectOneMenu>
        </p:column>

        <p:column id="ssType">
            <f:facet name="header">SerieType</f:facet>
            <h:outputText  id="sType" value="#{serviceSerieType.mySerieType}"></h:outputText>       
        </p:column>

        <p:column id="playDate">
            <f:facet name="header">Datum</f:facet>
            <div class="text-input">
                <h:inputText id="pDate" value="#{aScore.playDate}"  style="width: 100px; border: none; background: none;" readonly="true">
                <f:convertDateTime pattern="yyyy-MM-dd HH:mm:ss" />
                </h:inputText>
            </div>
            <!-- h:outputText value="#{aScore.playDate}" >
                <f:convertDateTime pattern="yyyy-MM-dd HH:mm:ss" />
            </h:outputText  -->
        </p:column>

        <p:column id="serieNo">
            <f:facet name="header">Antal Serier</f:facet>
            <h:inputText id="serieNumber" value="#{aScore.serieNo}"  style="width: 75px; border: none; background: none;" readonly="true">

            </h:inputText>
            <!-- h:outputText value="#{aScore.serieNo}" /  -->
        </p:column>

        <p:column id="laneNo">
            <f:facet name="header">Bana</f:facet>
            <h:outputText value="#{aScore.laneNo}" />
        </p:column>

        <p:column id="hcp">
            <f:facet name="header">Hcp</f:facet>
            <h:outputText id="testing" value="#{aScore.hcp}" />
        </p:column>         

        <p:column id="totalScore">
            <f:facet name="header">Total poäng</f:facet>
            <div class="text-input">
                <h:inputText id="scoreID" value="#{aScore.totalScore}"  style="width: 75px; border: none; background: none;" readonly="true"></h:inputText>
            </div>
            <!-- h:outputText value="#{aScore.totalScore}" / -->
        </p:column>

        <p:column id="save">
            <f:facet name="header">Spara</f:facet>
            <p:commandButton value="Visa lista" action="#{serviceScoreDB.saveScores(player, serviceHCP.myCurrentClub, 
            serviceSerieType.mySerieType, aScore.playDate, aScore.totalScore, aScore.serieNo)}">


            </p:commandButton>      
        </p:column>         




    </p:dataTable>

1 个答案:

答案 0 :(得分:0)

commandButton正在执行并提交表单中所有值的值。

如果表单提交中的任何表单字段未通过验证,则不会提交任何值。这可能是playerserieType在action方法的参数中作为null传递的原因。在所有验证和表单提交都发生后,Action方法将在Invoke Application阶段运行。

我的建议是尝试为commandButton指定p:ajax标记,以便只处理和呈现所需的字段。这可能会解决您的问题,但这是我从您发布的代码中可以看出的全部内容。