Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > проблема с JSF


Автор: mindfreak 25.3.2008, 22:22
Есть страничка profile.jsf:
Код

<html>
<body>
<f:view>
    <h:form>
        <h:outputText binding="#{profileBean.text}"/>
        <h:outputText value="#{facesContext.externalContext.requestParameterMap['id']}"/>
    </h:form>
</f:view>
</body>
</html>


Которой соответствует ProfileBean:
Код

public class ProfileBean {

    public ProfileBean() {
        }

    public HtmlOutputText getText() {
        FacesContext facesContext = FacesContext.getCurrentInstance();
        Application application = facesContext.getApplication();
        HtmlOutputText temp = (HtmlOutputText)application.createComponent(HtmlOutputText.COMPONENT_TYPE);
        Map map = facesContext.getExternalContext().getRequestParameterMap();
        temp.setValue(map.get("id"));
        return temp;
    }
}


При обращении к страничке таким способом: mysite.ru/profile.jsf?id=100 получим: 100 100
Далее при изменении id в урле почему то меняется только второе значение smile Подскаджите плз в чем моя ошибка. 

Заранее благодарен.

Автор: Zamuta 26.3.2008, 03:28
mindfreak, в каких managed-bean-scope лежат ProfileBean.java и profile.java ?

Автор: mindfreak 26.3.2008, 09:59
Код

<managed-bean>
        <description></description>
        <managed-bean-name>profileBean</managed-bean-name>
        <managed-bean-class>com.ManagedBeans.ProfileBean</managed-bean-class>
        <managed-bean-scope>session</managed-bean-scope>
    </managed-bean>

а для profile.jsf я ни чего не прописывал. Я так понимаю нужно в faces-config.xml прописывать те классы которые будут использоваться как бины для работы с джеспешками. Или я не прав?

Автор: Andrey1 26.3.2008, 14:22
Обращает на себя внимание строка:
Код

...
<managed-bean-scope>session</managed-bean-scope>
...


Точно не 
Код

...
<managed-bean-scope>request</managed-bean-scope>
...
?
Бин сессии по смыслу должен инициализироваться только при инициализации сессии smile...

Автор: alexsmirnov 28.3.2008, 02:52
В JSF реально "binding" имеет смысл только на reques scope бин. При восстановлении дерева, новый компонент на запрашивается, а восстанавливается из дерева и JSF пытается занести его в бин через set метод.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)