【发布时间】:2011-11-26 10:07:03
【问题描述】:
以下代码有问题:
<h:inputHidden value="autoCompleteHidden" id="administradorAutocompleteType">
<f:param value="#{suggestionEntitiesDM.usuario}" name="type"></f:param>
</h:inputHidden>
<p:autoComplete id="administradorAutocomplete"
value="#{empresaDM.administradorSeleccionada}"
completeMethod="#{suggestionEntitiesDM.suggestionList}"
var="administrador" itemLabel="#{administrador.txtNombreUsuario}"
forceSelection="true"
itemValue="#{administrador}" converter="entityConverter">
<p:ajax event="start" update="administradorAutocomplete" process="administradorAutocompleteType"/>
</p:autoComplete>
我想要的是在请求中发送类型参数,以便我可以通过使用获取值:
String type=FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("type");
但是,当我引用 String 类型时,我只是得到 null,我什至使用 Firebug 检查了请求参数,并且有效地传递了 administradorAutocompleteType=autoCompleteHidden,但从未发布 type=value。 我做错了什么?,如何在使用 f:ajax JSF 2 标签时传递额外的请求参数?非常感谢。
【问题讨论】:
-
对不起我的回答,你错了。我应该自己先用 p:autoComplete 测试它。回到问题,您的目标是 Servlet 3.0 环境吗? IE。您的目标环境支持使用参数调用方法的新 EL 2.2 特性吗?
-
我正在使用 Jboss AS 7,认为它是 Servlet 3.0,因为 web.xml 不是必需的,但是我认为我的 pom 中没有包含对 EL 2.2 的支持,我应该使用glassfish 2.2 依赖项,或者在这种情况下可能有一个等效的 Jboss EL。非常感谢。
-
不,你不需要。所有 JSP/Servlet 容器都已经捆绑了 EL。 Servlet 3.0 (Java EE 6) 已经捆绑了 EL 2.2。如有必要,只需将 EL 2.2 标记为“已提供”。但是好的,目标环境的能力现在更清楚了。如果我有时间,我会为你试验。
-
等等,为什么你需要将 bean 属性传递回 same bean
#{suggestionEntitiesDM}中的方法?你为什么不把它作为方法中的局部变量来访问呢?例如。this.usuario;在suggestionList()方法内?您没有将代码示例过度简化吗? -
因为我想创建一个可重用的方法来返回一个建议实体列表(使用 p:autocomplete 的 Pojo 功能),但是为了实现这一点,我需要知道我的 Entity 类应该查询,这就是为什么我发送该值以避免硬编码参数,如 name="type" value="MyClassName" (认为和 Enum 会是一个更好的选择......但不知道如何将它们与 EL 一起使用) 通过可能实现自动完成组件的页面无处不在。
标签: ajax jsf-2 primefaces el