Forms Can';t在JAVA后端获取JSF输入字段值
我在JSF上有以下UI部分-它是带有输入字段和提交的简单搜索表单:Forms Can';t在JAVA后端获取JSF输入字段值,forms,jsf,parameters,request,submit,Forms,Jsf,Parameters,Request,Submit,我在JSF上有以下UI部分-它是带有输入字段和提交的简单搜索表单: <h:form> <h:commandButton action="#{operation.found}" value="#{msg.search}" /> <h:inputText name="searchParam"/> </h:form> 相应地,在后端,我尝试下一步获取输入字段的值: public List<Sto
<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;
}
public List getFound(){
字符串名称=(字符串)FacesContext.getCurrentInstance()
.getExternalContext().getRequestParameterMap().get(
“搜索参数”);
SessionFactory SessionFactory=新配置().configure()
.buildSessionFactory();
HibernateTemplate hbt=新的HibernateTemplate();
hbt.setSessionFactory(会话工厂);
foundStores=hbt.find(BEAN_PATH+“WHERE name=?”,
新对象[]{name});
退货商店;
}
并将空名称传递到后端
在.jsf部分似乎存在这个问题,但乍看起来还可以…您必须将
指向托管bean属性:
<h:inputText name="searchParam" value="#{searchBean.searchParam}" />
然后在getFound()
方法中使用searchParam
当然,您需要将bean定义为托管bean,但我假设您已经这样做了:
<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>
搜索豆
mypackage.SearchBean
要求
您可以查看JSF教程(例如)请参阅完整的搜索方法。托管bean配置正常。我已经将searchParam属性添加到bean中。now UI看起来像:但在后端仍然为null。action方法应该是void,您应该使用
operation.getfind
,而不是operation.find。也许我不需要搜索参数来查找bean?似乎我只需要从请求中获取输入值并将其传递给HQL查询。从Portlet和JSP的角度来看,这是清晰的操作,但对于JSF和托管Bean来说就不那么清晰了。JSF没有以可预测的方式将输入参数放入请求中。你根本不需要得到请求。去看看一些教程,比如这个,谢谢你的回答,我用getBean()和serachParam属性完成了
<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>