0

像这样通过 jquery 修改 f:setPropertyActionListener 的值后出现一个错误:

$('#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,那么您应该寻找不同的解决方案。其中一种方法是使用<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 回答