0

itemValue に 2 つのスペースがあります"03 R MAIN1"。ajax送信中にパネルが再レンダリングされます。その時点で、選択された値とドロップダウンにある値が一致しているため、2つのスペースが1つのスペースに置き換えられていることがわかりました。そのため、「検証エラー: 値が無効です」というメッセージも表示されます。以下のコードを参照してください。

<a4j:form>
    <a4j:outputPanel ajaxRendered="true" id="TEST">
        <h:messages  layout="table" errorClass="errormsg noticeMsg" fatalClass="errormsg noticeMsg" 
             infoClass="infomsg noticeMsg" styleClass="table-center dont-capitalize" id="err_succ_message" />
        <h:outputText value="Display DropDown Values" />
        <h:selectOneMenu value="#{nonLocationSpecificBackingBean.testing}">
            <f:selectItem itemValue="03 R  MAIN1"/>
        </h:selectOneMenu>
        <a4j:commandButton value="Save" action="#{nonLocationSpecificBackingBean.test}" reRender="err_succ_message,TEST"></a4j:commandButton>
        <a4j:commandButton value="Test"  reRender="TEST"></a4j:commandButton>
    </a4j:outputPanel>
</a4j:form>

これについて助けてください。ありがとう

4

1 に答える 1

0

これは、HTML で複数のスペースがどのように扱われるかに関連しています。ただし、あなたの場合、cssトリックが答えだとは思いません(リンクされた質問で示唆されているように)。

良い解決策は、フォームで HTML エンコードされた値を使用し、サーバー コンポーネントでそれらをデコードすることだと思います。

更新: コンバーターでの実装の可能性は次のようになります (フォーマットの問題のため、コメントの代わりにここにコードを追加しました:))

public Object getAsObject(FacesContext arg0, UIComponent arg1, String newValue) {
    return (Object) newValue.replaceAll("&nbsp;", " ");
}

public String getAsString(FacesContext arg0, UIComponent arg1, Object value) { 
    return value.toString().replaceAll(" ", "&nbsp;"); 
}
于 2013-04-19T10:25:48.630 に答える