2013-03-19 57 views
0

我有一个错误后我修改f的值:setPropertyActionListener通过jquery的那样:不在GZIP格式错误时设定值到f:setPropertyActionListener JSF primefaces

$('#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> 
在页面的源代码,然后

的ThOD“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) 

我怎么能解决这个问题

预先感谢您

+0

你不修改的'值'。您正在修改''的值。你确定你知道你在做什么吗?这个问题表明你不知道。请详细说明,而您错误地认为这是正确的解决方案,而不是发布代码,没有任何意义在现实世界中,并询问关于它的错误的问题的具体功能要求。 – BalusC 2013-03-19 15:54:23

+0

我想修改'的value属性的'由jquery的(未使用Ajax作为JSF的情况下) – 2013-03-19 16:00:05

+0

是的,我理解。我只是要求**为什么**。这是完全不可能的。一旦你详细阐述了**为什么**,那么我们可以提出正确的解决方案。 **为什么**是您错误地认为这是正确的解决方案的具体功能要求。 – BalusC 2013-03-19 16:05:53

回答

1

您不能jQuery的修改<f:setPropertyActionListener>值。此信息没有在任何地方打印成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"); 
} 
+0

现在我更多地解释我的目标:我注意到primefaces在其所有的通信使用Ajax和在一些情况下我并不需要从服务器得到的数据,所以我想用primefaces UI组件,但也使用jquery时数据从当前页面中检索 – 2013-03-19 16:46:58