Получить значения нескольких компонентов поддержки из метода действия сохранения формы в JSF - PullRequest
1 голос
/ 20 февраля 2012

На странице jsf, которую я создал, через страницу include добавляются 3 другие страницы jsp, каждая из которых имеет свой собственный компонент поддержки и предварительно заполняет веб-сервисы значениями с помощью метода precolder scriptcollector.При сохранении, как получить отправленные значения в моем методе действия сохранения?Можно ли получить каждый из этих бинов с их текущими значениями из Faces Context?Я использую JSF 1.1.

Ответы [ 2 ]

1 голос
/ 20 февраля 2012

Вы можете внедрить один управляемый компонент в другой управляемый компонент как управляемое свойство. В JSF 1.x это должно быть сделано с помощью объявления <managed-property> в faces-config.xml.

Вот начальный пример того, как 3 bean-компонента веб-службы должны быть внедрены в один bean-компонент формы.

<managed-bean>
    <managed-bean-name>webServiceBean1</managed-bean-name>
    <managed-bean-class>com.example.WebServiceBean1</managed-bean-class>
    <managed-bean-scope>request</managed-bean-scope>
</managed-bean>
<managed-bean>
    <managed-bean-name>webServiceBean2</managed-bean-name>
    <managed-bean-class>com.example.WebServiceBean2</managed-bean-class>
    <managed-bean-scope>request</managed-bean-scope>
</managed-bean>
<managed-bean>
    <managed-bean-name>webServiceBean3</managed-bean-name>
    <managed-bean-class>com.example.WebServiceBean3</managed-bean-class>
    <managed-bean-scope>request</managed-bean-scope>
</managed-bean>
<managed-bean>
    <managed-bean-name>formBean</managed-bean-name>
    <managed-bean-class>com.example.FormBean</managed-bean-class>
    <managed-bean-scope>request</managed-bean-scope>
    <managed-property>
        <property-name>webServiceBean1</property-name>
        <value>#{webServiceBean1}</value>
    </managed-property>
    <managed-property>
        <property-name>webServiceBean2</property-name>
        <value>#{webServiceBean2}</value>
    </managed-property>
    <managed-property>
        <property-name>webServiceBean3</property-name>
        <value>#{webServiceBean3}</value>
    </managed-property>
</managed-bean>

Таким образом, вы можете просто получить к ним доступ "обычным способом" внутри метода отправки формы.

public class FormBean {

    private WebServiceBean1 webServiceBean1;
    private WebServiceBean2 webServiceBean2;
    private WebServiceBean3 webServiceBean3;

    public String submit() {
        // Here you can just access the submitted data through the injected beans.
    }

    // Add/generate setters. Getters are not necesary.
}

В качестве альтернативы вы можете использовать Application#createValueBinding() для программной оценки EL.

public String submit() {
    FacesContext context = FacesContext.getCurrentInstance();
    Application application = context.getApplication();
    WebServiceBean1 webServiceBean1 = (WebServiceBean1) application.createValueBinding("#{webServiceBean1}").getValue(context);
    WebServiceBean1 webServiceBean1 = (WebServiceBean2) application.createValueBinding("#{webServiceBean2}").getValue(context);
    WebServiceBean1 webServiceBean1 = (WebServiceBean3) application.createValueBinding("#{webServiceBean3}").getValue(context);
    // ...
}

Обратите внимание, что вышеуказанные методы в JSF 1.2 и более поздних версиях устарели в пользу унифицированного EL API. См. Также Получение управляемого компонента JSF по имени в любом относящемся к сервлету классе .

0 голосов
/ 20 февраля 2012

При сохранении, как получить отправленные значения в моем методе действия сохранения?

В фазе применения значений запроса присвоенные значения присваиваются и могут быть доступны с помощью следующего метода input.getSubmittedValue(), где input - UIComponent на основе ввода.Отправленное значение будет проверено и преобразовано на этапе проверки, и если это произойдет успешно, value UIComponent будет установлен соответствующим образом.Вы должны быть в состоянии найти UIComponent, который вы ищете из FacesContext.

Возможно ли получить каждый из этих компонентов с их текущими значениями из контекста Faces?

IЯ действительно не уверен, какова ваша цель, но если вам нужны только другие управляемые bean-компоненты, вы можете получить их значения из HttpSession, который доступен из ExternalContext.

FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("nameOfManagedBean");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...