【问题标题】:Can't get JSF input field value on JAVA backend无法在 JAVA 后端获取 JSF 输入字段值
【发布时间】:2009-11-28 18:22:29
【问题描述】:

我在 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;

}

并将空名称传递给后端。

.jsf 部分似乎有问题,但乍一看还可以...

【问题讨论】:

    标签: forms jsf parameters request submit


    【解决方案1】:

    您必须将 &lt;h:inputText&gt; 指向托管 bean 属性:

    <h:inputText name="searchParam" value="#{searchBean.searchParam}" />
    

    并在您的 bean 中定义:

    private String searchParam;
    public String getSearchParam() {..}
    public void setSearchParam(String 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>
    

    您可以查看 JSF 教程(例如 this

    【讨论】:

    • 请参阅搜索上层的完整方法。托管 bean 配置正常。我已将 searchParam 属性添加到 bean。现在的 UI 看起来像:
      但后端仍为 null。
    • action 方法应该是 void,你应该使用operation.getFound,而不是 operation.found。
    • 也许我不需要为 bean 搜索参数?看来我只需要从请求中获取输入值并将其传递给 HQL 查询。从 Portlets 和 JSP 的角度来看,这是明确的操作,但对于 JSF 和托管 bean 来说不是那么清楚。
    • JSF 不会以可预测的方式将输入参数放入请求中。您根本不必收到请求。去看看一些教程 - 例如 - exadel.com/tutorial/jsf/jsftutorial-kickstart.html
    • 谢谢你的回答,我用 getBean() 和 serachParam 属性做到了
    猜你喜欢
    • 1970-01-01
    • 2018-03-26
    • 1970-01-01
    • 2020-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-29
    相关资源
    最近更新 更多