如何在处理JSF 2.0事件时获得上下文Pojo



我使用的是第三方JSF 2.0组件(Primefaces 3.0 FileUpload),它定义了自己的自定义事件。在服务器端,处理程序的签名如下所示:

public void handleFileUpload(FileUploadEvent event)

问题是,我的表单是动态构建的,可能有几十个单独的FileUpload控件在它,我需要知道哪一个FileUpload控件生成的事件。

实际上,我不需要知道是哪个,我只需要ui:repeat中的"var",它导致特定的FileUpload控件生成。对于普通的控制器,我可以很容易地传入我需要的变量,但是这个第三方组件碰巧使用事件处理机制而不是控制器,并且对如何使用JSF 2.0事件相当无知,我不知道如何获得POJO,只给出事件。

我看到事件上有一个getComponent()方法,它告诉我uiccomponent,但是在摸索之后,我没有看到任何简单的方法来获得上下文变量,甚至没有方法来生成我自己的EL表达式来评估上下文变量。

所以问题归结为……如果只给定一个事件,我如何获得所单击的特定组件范围内的上下文变量?

明白了…我需要把它放到第三方组件

<f:attribute name="myObject" value="#{myObject}"/>

然后它在服务器端组件的属性映射中可用:

final MyOjbect myObject = (MyObject) event.getComponent().getAttributes().get("myObject");

最新更新