无法在JAVA后台获得JSF输入字段值
问题描述:
我有以下的JSF UI的一部分 - 它与输入字段简单的搜索表单并提交:无法在JAVA后台获得JSF输入字段值
<h:form>
<h:commandButton action="#{operation.found}" value="#{msg.search}" />
<h:inputText name="searchParam"/>
</h:form>
相应的,在后台,我试图获得价值的输入字段旁边道:
public List<Store> getFound() {
String name = (String) FacesContext.getCurrentInstance()
.getExternalContext().getRequestParameterMap().get(
"searchParam");
SessionFactory sessionFactory = new Configuration().configure()
.buildSessionFactory();
HibernateTemplate hbt = new HibernateTemplate();
hbt.setSessionFactory(sessionFactory);
foundStores = hbt.find(BEAN_PATH + " WHERE name = ?",
new Object[] { name });
return foundStores;
}
和空名称被传递到后端。
似乎在.jsf一部分问题,但是从第一眼看上去确定...
答
必须指向的<h:inputText>
到托管bean属性:
<h:inputText name="searchParam" value="#{searchBean.searchParam}" />
,并在bean定义:
private String searchParam;
public String getSearchParam() {..}
public void setSearchParam(String searchParam) {..}
然后在您的getFound()
方法中使用searchParam;
当然,你需要有定义为管理豆的豆,但我相信你已经做到了:
<managed-bean>
<managed-bean-name>searchBean</managed-bean-name>
<managed-bean-class>mypackage.SearchBean</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>
可以检查JSF教程(如this,例如)
见请全部搜索方法上。 配置好的托管bean。 我已经将searchParam属性添加到bean。 一种现在UI看起来像: \t \t
但是在后端仍然是空的。 – sergionni 2009-11-28 18:59:04action方法应该是void,你应该使用'operation.getFound'而不是operation.found。 – Bozho 2009-11-28 19:01:00
也许我不需要searchParam for bean? 似乎我只需要从请求中获取输入值并将其传递给HQL查询。 从Portlet和JSP的角度来看,这是明确的操作,但对于JSF和受管Bean来说不是那么清楚。 – sergionni 2009-11-28 19:04:04