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


Автор: phpLiNa 26.7.2010, 15:20
Здраствуйте.
В своем веб-проекте пытаюсь реализовать вывод структуры. сначала выводится список названий типов объектов. по клику на него выводится список конкретных экземпляров. по клику на экземпляр должно вывестись описание свойств экземпляра. 
правила перехода по страницам описанно faces-config xml
Код

<navigation-rule>
    
        <from-view-id>TypeList.jsp</from-view-id>
        <navigation-case>
        <from-action>#{typeListBean.addNewType}</from-action>
        <to-view-id>/faces/TypeList.jsp</to-view-id>
        </navigation-case>
        
        <navigation-case>
        <from-action>#{typeListBean.deleteType}</from-action>
        <to-view-id>/faces/TypeList.jsp</to-view-id>
        </navigation-case>
        

    </navigation-rule>
    <navigation-rule>
                    
        <from-view-id>*</from-view-id>
                
        <navigation-case>
        <from-action>#{typeListBean.selectType}</from-action>
        <to-view-id>/faces/TypeObjects.jsp</to-view-id>
        </navigation-case>    
        
        <navigation-case>
        <from-action>#{typeObjectsBean.selectObject}</from-action>
        <to-view-id>/faces/ObjectDescription.jsp</to-view-id>
        </navigation-case>
    </navigation-rule>


код с ссылкой на странице TypeList.jsp

Код

<h:commandLink value="#{loc}" action="#{typeListBean.selectType}" >
                        <f:param  name="id" value="#{loc}" />
                        </h:commandLink>


код с кнопкой на странице TypeObjects.jsp
Код

    <h:commandLink value="#{loc.ID}" action="#{typeObjectsBean.selectObject}" >
                       <f:param  name="id" value="#{loc.ID}" />
                       <f:param  name="typename" value="#{loc.typeName}" />
                   </h:commandLink>  


в бинах соответсвующие функции возвращают пустую строку. 

проблема в том, что на страницу TypeObjects.jsp мы переходим без проблем (хотя в адресной строке и остается старый адрес), а вот на страницу ObjectDescription.jsp не переходит никак. остается на  TypeObjects.jsp но уже с новыми переданными параметрами.

посоветуйте пожалуйста, как можно решить эту проблему? или лучше применить другой способ вывода?

Автор: SlavaSemushin 27.7.2010, 07:54
Цитата

проблема в том, что на страницу TypeObjects.jsp мы переходим без проблем (хотя в адресной строке и остается старый адрес),


Чтобы появлялся "новый" адрес, нужно добавить <redirect />

Цитата

 а вот на страницу ObjectDescription.jsp не переходит никак. остается на  TypeObjects.jsp но уже с новыми переданными параметрами.


Видимо, всегда срабатыват первое правило, поэтому вы и оказываетесь на TypeObjects.jsp (для проверки попробуйте поменять эти два правила местами). Полагаю, чтобы это разрулить, можно попробовать добавить from-outcome элемент ко второму правилу и сделать, чтобы selectObject возвращал именно этот outcome.

Автор: phpLiNa 27.7.2010, 11:49
Цитата

Чтобы появлялся "новый" адрес, нужно добавить <redirect />

при добавлении <redirect/> теряются параметры - поэтому этот способ не очень подходит.
а вообщее каким образом еще можно вывести подоную структуру?

Автор: SlavaSemushin 28.7.2010, 05:56
Цитата

а вообщее каким образом еще можно вывести подоную структуру?


Я бы попробовал использовать статичные правила перехода. Без использования методов бина, которые возвращают outcome. Просто прописать что с этой страницы на ту, а с той на вон ту. Если я правильно вас понял, то это должно сработать. (В гугле также советую поискать статейки про навигацию и посмотреть там примеры, наверняка, что-нибудь найдёте или придумаете по ходу их чтения.)

Автор: phpLiNa 28.7.2010, 16:06
помогла замена на   outputLink
  
Код

           
 <h:outputLink value="ObjectDescription.faces">
                        <h:outputText value="#{loc.ID}"/>
                        <f:param name="objid" value="#{loc.ID}"/>
                        <f:param name="typename" value="#{loc.typeName}"/>
                    </h:outputLink>    


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