Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.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
Forms Can';t在JAVA后端获取JSF输入字段值_Forms_Jsf_Parameters_Request_Submit - Fatal编程技术网

Forms Can';t在JAVA后端获取JSF输入字段值

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

我在JSF上有以下UI部分-它是带有输入字段和提交的简单搜索表单:

    <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>