Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf 2 如何在java中发现使用jquery删除了jsf组件?_Jsf 2_Primefaces - Fatal编程技术网

Jsf 2 如何在java中发现使用jquery删除了jsf组件?

Jsf 2 如何在java中发现使用jquery删除了jsf组件?,jsf-2,primefaces,Jsf 2,Primefaces,我必须只从客户端删除primefaces组件。为此,我使用jqueryremove() 因为我不能从客户端设置rendered=false,所以我只是试图在后端控制器中计算或发现删除的组件不存在。删除后,我检查了页面html,该组件不再位于dom中。但是在删除组件之前和之后,我通过FacesContext获取了相同的子计数值(非零): FacesContext.getCurrentInstance().getViewRoot().findComponent("htmlGeneratedCompo

我必须只从客户端删除primefaces组件。为此,我使用jquery
remove()

因为我不能从客户端设置
rendered=false
,所以我只是试图在后端控制器中计算或发现删除的组件不存在。删除后,我检查了页面html,该组件不再位于dom中。但是在删除组件之前和之后,我通过
FacesContext
获取了相同的子计数值(非零):

FacesContext.getCurrentInstance().getViewRoot().findComponent("htmlGeneratedComponentId").getChildCount();
我知道
FacesContext
不会知道该元素已被某个客户端脚本删除。JSF不会知道任何事情,因为没有与JSF进行任何通信,
rendered
属性将保持为true,由以下人员检查:

FacesContext.getCurrentInstance().getViewRoot().findComponent("htmlGeneratedComponentId").isRendered();

现在,我的要求是,在使用客户端脚本删除组件后,我需要在java控制器中找到,即使
呈现的
属性仍然为真,也可以知道组件已被删除。

通过附加请求参数传递该信息,您可以在相关组件的
呈现的
属性中进行检查

例如


不用说,这是令人讨厌的。最好让jQuery通过JSF/PrimeFaces ajax调用切换
rendered
属性。这一点很有用。

我非常同意上面最后一段。您需要删除it客户端,但仍然需要了解it服务器端。奇怪的requirement@BalusC我试图通过ajax调用将EL表达式作为方法参数传递,如下所示:public void onTabChange(TabChangeEvent事件,String gridRemovedByClient){}我需要在方法中使用事件对象,而上述方法签名不起作用。
<h:form>
    <input type="hidden" id="fooRemovedByClient" name="fooRemovedByClient" />
    ...
    <x:someComponent id="foo" rendered="#{not param.fooRemovedByClient}" />
</h:form>
$foo.remove();
$("#fooRemovedByClient").val("true");