Не удается получить значение поля ввода JSF на бэкэнде JAVA - PullRequest
1 голос
/ 28 ноября 2009

У меня есть следующая часть пользовательского интерфейса на 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, но с первого взгляда выглядит нормально ...

1 Ответ

2 голосов
/ 28 ноября 2009

Вы должны указать <h:inputText> на свойство управляемого компонента:

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

и определите в своем бобе:

private String searchParam;
public String getSearchParam() {..}
public void setSearchParam(String searchParam) {..}

и затем используйте searchParam в вашем getFound() методе;

Конечно, вам нужно определить компонент как управляемый компонент, но я предполагаю, что вы это сделали:

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

...