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



我有一个包含一些字段的表格。问题是按下保存按钮时播放器和系列类型设置为空。选择菜单项在使用时设置正确。只有当您按下按钮时,它们才会设置为 null。

    <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>

命令按钮正在执行并提交表单中所有值的值。

如果表单提交

中的任何表单字段验证失败,则不会提交任何值。 这可能就是为什么playerserieType在参数中作为 null 传递给操作方法的原因。 Action 方法将在所有验证和表单提交发生后在调用应用程序阶段运行。

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

相关内容

  • 没有找到相关文章

最新更新