Свойство управляемого компонента не поддерживается на следующей странице @ManagedProperty - PullRequest
0 голосов
/ 16 августа 2011

Я новичок в JSF.В моем проекте я использую @ManagedBean, @RequestScoped.Я использую 4 страницы в моем проекте.Моя проблема заключалась в том, что значения bean не поддерживаются на второй, третьей и четвертой страницах.Я использую геттер и сеттер правильно.Если я не использую @ManagedProperty, то значение bean поддерживается правильно.Но мне нужно использовать @ManagedProperty.Не могли бы вы посоветовать мне, как решить эту проблему?Я скопировал некоторый пример кода для справки.

@ManagedBean
@RequestScoped
public class ArticlePrepToolManagedBean implements Runnable, Serializable {

    @ManagedProperty (value="#{param.jidName}")
    private String jidName;

    @ManagedProperty (value="#{param.aidName}")
    private String aidName;

    private List<com.elsevier.ArticlePrepTool.db.ItemZipContains> usabilityDetailList = null;

    public String getAidName() {
            return aidName;
    }

    public void setAidName(String aidName) {
            this.aidName = aidName;
    }

    public String getJidName() {
            return jidName;
    }

    public void setJidName(String jidName) {
            this.jidName = jidName;
    }

    public List<ItemZipContains> getUsabilityDetailList() {
         return usabilityDetailList;
    }

    public void setUsabilityDetailList(List<ItemZipContains> usabilityDetailList) {
       ArticlePrepToolManagedBean.usabilityDetailList = usabilityDetailList;
    }

}

URL моего проекта (http://localhost:8080/articlepreptool/), но вход для моего проекта - jidName = AEA aidName = 10663), который введен какой-то другой веб-страницей, если пользовательвызвать с помощью следующего href " PrepTool ". Зависит от ввода я выбрал некоторые данные в моей базе данных проекта (с использованием JPA) и перечислить данные на первой странице. Но если я перехожу на следующую страницу все предыдущиеданные, хранящиеся в этом списке, которые я получил от БД, были очищены, то есть все значения списка и переменные, которые установлены в bean-компоненте, становятся нулевыми. Поэтому не могли бы вы посоветовать мне, как решить эту проблему. Эта проблема возникала только в том случае, если я использовал @ManagedProperty.Я использовал @ManagedProperty для получения входных значений через URL, потому что входные значения моего проекта поступают через другую веб-страницу.

1 Ответ

1 голос
/ 16 августа 2011

A @ManagedProperty("#{param.foo}") в основном устанавливает параметр HTTP-запроса с именем "foo" в качестве свойства компонента непосредственно после создания компонента.Если вы получаете null значения для них, то это просто означает, что эти параметры не присутствуют в HTTP-запросе.

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

<h:link value="Go to page2" outcome="page2">
    <f:param name="jidName" value="#{bean.jidName}" />
    <f:param name="aidName" value="#{bean.aidName}" />
</h:link>

Это приведет к чему-то вроде:

<a href="page2.xhtml?jidName=foo&aidname=bar">

Таким образом, эти параметры могут быть установлены как свойства компонента.

В качестве альтернативывместо @ManagedProperty вы также можете использовать <f:viewParam> на всех страницах и добавить includeViewParams=true к результату.См. Также ViewParam против @ManagedProperty (value = "# {param.id}")

Если вы перемещаетесь по отправке формы, то на самом деле нет причин использовать их.Или вы должны злоупотреблять формами вместо ссылок для простой ванильной навигации по страницам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...