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


Автор: AntUser 28.2.2011, 02:10
Проблема в следующем.
1. Есть JSF 2.0 (как вывести версию реализации?)
2. На страничке написано  
Код
<h:commandButton id="searchButton" value="Search" action="#{search.remove(1)}"/>
 
Но при нажатии на кнопку метод 
Код
public String remove(String id)
 не вызывается.
3. В логах что-то есть: 
Код

[#|2011-02-28T00:51:00.213+0200|INFO|glassfish3.0.1|javax.enterprise.resource.webcontainer.jsf.renderkit|_ThreadID=123;_ThreadName=Thread-1;|WARNING: FacesMessage(s) have been enqueued, but may not have been displayed.
sourceId=null[severity=(ERROR 2), summary=(One or more resources have the target of 'head', but no 'head' component has been defined within the view.), detail=(One or more resources have the target of 'head', but no 'head' component has been defined within the view.)]|#]


О чем речь в этом сообщении?


Автор: m0zg 28.2.2011, 12:05
О тэге <head>. Или <h:head>. Была такая ошибка у меня когда то. Решалась методом перебора возможных вариантов действий smile

Автор: AntUser 28.2.2011, 16:24
Ошибку с HEAD поборол, но все равно не срабатывает экшн.
Иногда получаю такое в логе:
Код

[#|2011-02-28T15:21:23.910+0200|SEVERE|glassfish3.0.1|grizzly|_ThreadID=32;_ThreadName=Thread-1;|doSelect exception
java.lang.IllegalThreadStateException
    at java.lang.Thread.start(Thread.java:688)
    at com.sun.corba.ee.impl.transport.SelectorImpl.startSelector(SelectorImpl.java:414)
    at com.sun.corba.ee.impl.transport.SelectorImpl.registerForEvent(SelectorImpl.java:180)
    at com.sun.corba.ee.impl.transport.CorbaAcceptorBase.processSocket(CorbaAcceptorBase.java:156)
    at org.glassfish.enterprise.iiop.impl.PEORBConfigurator$AcceptorDelegateImpl.handleRequest(PEORBConfigurator.java:313)
    at org.glassfish.enterprise.iiop.api.ORBLazyServiceInitializer.handleRequest(ORBLazyServiceInitializer.java:99)
    at com.sun.enterprise.v3.services.impl.ServiceInitializerHandler.onAcceptInterest(ServiceInitializerHandler.java:110)
    at com.sun.grizzly.SelectorHandlerRunner.handleSelectedKey(SelectorHandlerRunner.java:295)
    at com.sun.grizzly.SelectorHandlerRunner.handleSelectedKeys(SelectorHandlerRunner.java:258)
    at com.sun.grizzly.SelectorHandlerRunner.doSelect(SelectorHandlerRunner.java:195)
    at com.sun.grizzly.SelectorHandlerRunner.run(SelectorHandlerRunner.java:130)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
    at java.lang.Thread.run(Thread.java:732)


Разбираюсь, но если встречали - пишите ))

Это GF 301

Автор: AntUser 28.2.2011, 17:05
это бага глассфиша, меняю на 3.1

Автор: AntUser 28.2.2011, 20:30
кнопка не отрабатывает внутри h:column при RequestScope- почему?
Кто может пояснить на русском, почему так происходит?



Автор: m0zg 1.3.2011, 11:16
Код посмотреть бы

Автор: AntUser 1.3.2011, 21:20
да здесь в общем-то и без кода вопрос полностью описан.
Вот посмотрите здесь - http://www.coderanch.com/t/498940/JSF/java/commandButton-commandLink-not-working-inside
В ответе, как и на других ресурсах, указание на scope бина.

Я просто не понимаю, как строится таблица, что в ней отсутствуют некие данные, не позволяющие добраться до бина.

Автор: m0zg 2.3.2011, 11:11
Аа, да, есть такая тема. Делал так же, как и на code ranch написано. Но это, конечно, если scope у бина request, т.к. после отрисовки (открытия) таблицы его уже нет, вобщем-то smile. А <a4j:keepAlive bean="bean_name" /> (RichFaces) продлевает его жизненный цикл, почитай у них в документации, если не знаком с этим тэгом.

Автор: AntUser 2.3.2011, 13:23
так a4j это же RichFaces, а не JSF. В 2.0, правда, AJAX добавили, если я правильно понимаю.
Я так понимаю, надо читать про JSF... Я по дури пытался читать спеку по JSF..... лучше книги типа Complete Reference (может кому совет пригодится).

Автор: m0zg 2.3.2011, 13:39
А Richfaces не JSF-фреймворк? Если не хочется юзать сторонние библиотеки, можно поменять Request на Session.

Автор: AntUser 2.3.2011, 14:28
можно и буду потом.
Я сейчас хотел бы разобраться, почему так происходит. Я в общем-то фазы жизненного цикла представляю. Но я не понимаю, чем таблица так отличается, что экшны в реквест-скоупе не работают. Я верно понимаю, что реквест- скоп живет только до отдачи всего контента?
По идее, бин должен быть мертв и для остальных экшнов, не только те, что в таблице... Вот тут я не понимаю, если можно, поясните.

Автор: vogdb 2.3.2011, 18:52
Так он и для остальных мертв, при каждом обращении к реквест скоп бину, запускающему jsf lifecycle (ajax или полному) он создается заново. Запросил страницу или параметр ajax'ом, он будет создан заново. Могу конечно ошибаться, но всегда так думал.

Автор: AntUser 2.3.2011, 22:36
ну я в общем-то тоже себе это так представляю. данные все идут с реквестом, из которого идет восстановление.
В принципе можно много логичных схем нарисовать, но лучше, если кто-то знает, что и как может описать, что там внутри.

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