Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: не запускается Action из Commandlink
Форум программистов > Системное программирование > Java
Gluk
.jsp страничка:
...
<h:commandLink action="#{myBean.gotoPage}">
                        <h:outputText value="#{myBean.name}"/>
                        <f:param name="nextPage" value="#{myBean.uri}"/>
</h:commandLink>
...


myBean.class :
...
public String gotoPage() {
        System.out.println("Action executed...");
return "goto";
}
...


faces-config.xml:
<managed-bean>
      <managed-bean-name>myBean</managed-bean-name>
        <managed-bean-class>MyPackage.MyClass</managed-bean-class>
      <managed-bean-scope>session</managed-bean-scope>
  </managed-bean>


Во-о-о-т...

Ну, и при нажатии на ссылку (commandLink то бишь) TomCat как-то недобро мне отвечает:
message 

description The server encountered an internal error () that prevented it from fulfilling this request.

exception
javax.servlet.ServletException: Error calling action method of component with id _idJsp1:data:0:_idJsp7
    javax.faces.webapp.FacesServlet.service(FacesServlet.java:152)

root cause
javax.faces.FacesException: Error calling action method of component with id _idJsp1:data:0:_idJsp7
    org.apache.myfaces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:74)
    javax.faces.component.UICommand.broadcast(UICommand.java:106)
    javax.faces.component.UIData.broadcast(UIData.java:513)
    javax.faces.component.UIViewRoot._broadcastForPhase(UIViewRoot.java:94)
    javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:168)
    org.apache.myfaces.lifecycle.LifecycleImpl.invokeApplication(LifecycleImpl.java:343)
    org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:86)
    javax.faces.webapp.FacesServlet.service(FacesServlet.java:137)


Сообщения "Action executed..." в логах нет.
Если заменить навигацию на статическую :
 <h:commandLink action="goto">
всё работает.

Так чем, собственно, плох мой изначальный вариант?!
Gluk
Так толком и не понял что было-то. Моя вина, что не указал всё, что ещё на страничке было! Но я не думал что там всё так взаимосвязано (тока начинаю писать на Java)!!! Короче, был ещё метод, который вызывался при обновлении страницы. Он каким-то образом блокировал запуск моего action'а. Изменил чуток Bean, добавил в commandLink свойство immediate="true"... Заработало! Методом тыка всё сделал. Если кто объяснит на будущее - буду благодарен.
А так, всё....
pasha Vitebsk
То, что у тебя заработал action при установке атрибута immdate="true" говорит о том, что для какого- то компонента на jsf-странице не выполнился процесс валидации или конвертации. Попробуй на jsf странице закомментировать другие тэги. Так найдешь ошибку.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2008 IPS, Inc.