Управляемый JSF 2.0 портлет в Websphere - как реализовать commandLinks
Я знаю, как создавать сервлеты JSF 2.0, и я знаю, как создавать портлеты, но у меня проблемы с объединением обеих технологий. Мой портлет JSF работает хорошо до тех пор, пока мне не придется вызывать методы своих компонентов поддержки через <h:commandLink />
, Когда я нажимаю на эти ссылки, текущая страница перезагружается, и никакой метод не вызывается. Я думаю, что мое приложение нуждается в дополнительной настройке. Что нужно сделать, чтобы заставить команду работать так:
<h:commandLink action="#{backingBean.doSomething}" />
Обратите внимание, что я использую сервер портала WebSphere 8, который обеспечивает мост портлета JSF 2.0.
РЕДАКТИРОВАТЬ
Я вижу основной конфликт здесь:
- API портлета отвечает за генерацию URL - генерирует действительные URL портала
- JSF отвечает за генерацию URL - генерирует действительные JSF-URL
Мои управляемые компоненты настроены с использованием аннотаций:
@ManagedBean(name = "backingBean")
@ViewScoped
public class entryEditController
{
public String doSomething()
{
return "result.xhtml";
}
}
Это мои лица-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<faces-config
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
version="2.0">
<application>
<view-handler>com.ibm.faces20.portlet.FaceletPortletViewHandler</view-handler>
<el-resolver>com.ibm.faces20.portlet.PortletELResolver</el-resolver>
<resource-handler>com.ibm.faces20.portlet.httpbridge.PortletResourceHandler</resource-handler>
</application>
</faces-config>
1 ответ
- Обновление до WAS 8.0.0.8
Если ваш боб
@SessionScoped
или же@ViewScoped
Вы должны добавить это в свой web.xml:<context-param> <param-name>org.apache.myfaces.SERIALIZE_STATE_IN_SESSION</param-name> <param-value>false</param-value> </context-param>
- Перед шагом 2 я добавил новую командную кнопку с недопустимым значением действия. Это приводит к ошибке проверки. При ошибках проверки команда не выполняется => Убедитесь, что ошибок проверки нет, например, добавив
<h:messages />
к вашему шаблону - Прочитайте этот ответ: /questions/512990/commandbuttoncommandlinkajax-dejstvie-metod-slushatelya-ne-vyizvan-ili-vhodnoe-znachenie-ne-ustanovleno-obnovleno/512997#512997