0

そのように jquery で f:setPropertyActionListener の値を変更した後、1 つのエラーが発生しました。

$('#javax\\.faces\\.ViewState').val("1111111");

要素を調べてそのIDを知りました(非表示の入力に変換されます)

ここにjsf要素があります:

<p:commandButton actionListener="#{typeMB.supprimer}"  value="supprimer" >
    <f:setPropertyActionListener target="typeMB.selectedIdType" value="dcscdc" />
    </p:commandButton>
    </h:form>

次に、ページのコードソースで:値は影響を受けますが、メソッド「supprimer」は実行されず、次のエラーが発生します:

 mars 19, 2013 3:33:12 PM com.sun.faces.renderkit.ClientSideStateHelper doGetState
SEVERE: Not in GZIP format
java.util.zip.ZipException: Not in GZIP format
    at java.util.zip.GZIPInputStream.readHeader(GZIPInputStream.java:164)
    at java.util.zip.GZIPInputStream.<init>(GZIPInputStream.java:78)
    at java.util.zip.GZIPInputStream.<init>(GZIPInputStream.java:90)
    at com.sun.faces.renderkit.ClientSideStateHelper.doGetState(ClientSideStateHelper.java:231)
    at com.sun.faces.renderkit.ClientSideStateHelper.getState(ClientSideStateHelper.java:198)
    at com.sun.faces.renderkit.ResponseStateManagerImpl.getState(ResponseStateManagerImpl.java:100)
    at com.sun.faces.application.view.StateManagementStrategyImpl.restoreView(StateManagementStrategyImpl.java:227)
    at com.sun.faces.application.StateManagerImpl.restoreView(StateManagerImpl.java:188)
    at com.sun.faces.application.view.ViewHandlingStrategy.restoreView(ViewHandlingStrategy.java:123)
    at com.sun.faces.application.view.FaceletViewHandlingStrategy.restoreView(FaceletViewHandlingStrategy.java:453)
    at com.sun.faces.application.view.MultiViewHandler.restoreView(MultiViewHandler.java:148)

どうすれば解決できますか

前もって感謝します

4

1 に答える 1

1

<f:setPropertyActionListener>の値をjQueryで変更することはできません。この情報は HTML 出力のどこにも出力されず (ブラウザでページを右クリックし、[ソースを表示] を実行して自分で確認します)、したがって JS/jQuery で操作することもできません。現在のjQueryの試みは、JSFビューステート識別子の非表示の入力フィールドを変更するだけであり、これは非常にノーノーです(そして、基本的なJSF、HTTP、およびHTMLがどのように機能するかがわからないことを示しています。その時点で強くお勧めしますJSF Web アプリケーションの開発を一時的に停止し、いくつかの健全な HTTP/HTML/JSF リソースに目を通し、まず基本的な事項について学習します)。特定の例外は、この間違いの結果です。JSF ビュー ステート識別子を、予期された形式ではない任意の値に変更しました。

具体的な機能要件についてはまだ明確に述べていませんが、JavaScript 制御の変数を追加のリクエスト パラメータとして JSF に渡すことが唯一の目的である場合は、別の解決策を探す必要があります。方法の 1 つは、 を使用すること<h:inputHidden>です。

<h:form id="formId">
    <h:inputHidden id="hiddenId" value="#{typeMB.selectedIdType}" />
    <p:commandButton value="supprimer" onclick="yourFunction()" actionListener="#{typeMB.supprimer}" />
</h:form>

このJSで:

function yourFunction() {
    $("#formId\\:hiddenId").val("1111111");
}
于 2013-03-19T16:15:32.820 に答える