收到事件后的 Portlet IPC
Portlet IPC after received Event
我有一个显示所有学生的导航 portlet,当一个学生被点击时,我会向其他 portlet 发送一个带有被点击学生 ID 的事件。发送和接收事件不是问题,可以正常工作。我不明白的是如何处理对象的 ID。
如何更新接收事件的 portlet 以显示它们接收到的对象的数据。由于我只得到id,第一步是在数据库中搜索并获取所有数据,然后更新portlets视图。
这是我的事件处理程序:
hskaId 是我需要的对象的 ID。
public class ReceivedFeedbackEventHandler implements BridgeEventHandler{
@Override
public EventNavigationResult handleEvent(FacesContext facesContext, Event event) {
EventNavigationResult eventNavigationResult = null;
String eventQName = event.getQName().toString();
if (eventQName.equals("{http://liferay.com/events}ipc.studentSelected")) {
System.out.print("EVENT RECIVED STUDENT");
String hskaId = (String) event.getValue();
}
if(eventQName.equals("{http://liferay.com/events}ipc.projectSelected")) {
System.out.print("EVENT RECIVED PROJECT");
}
return eventNavigationResult;
}
}
在 Portlet 的 ManagedBean 中,我调用它来获取 hskaId 的所有学生。 "hskaId" 现在所在的位置,接收到的事件值应该去哪里。
Student student = StudentLocalServiceUtil.findByProjectId("hskaId");
如何将事件的接收值获取到 ManagedBean 并更新视图?
这是一个交叉帖子:Link
您需要通过 ELContext
.
以编程方式获取您的 ManagedBean
以下是您应该如何操作:
String elExpression = "#{studentsModelBean}";
ELContext elContext = facesContext.getELContext();
ValueExpression valueExpression = facesContext.getApplication().getExpressionFactory().createValueExpression(elContext, elExpression, StudentsModelBean.class);
StudentsModelBean studentsModelBean = (StudentsModelBean) valueExpression.getValue(elContext);
String hskaId = (String) event.getValue();
studentsModelBean.setStudent(hskaId);
String fromAction = null;
String outcome = "ipc.studentSelected";
eventNavigationResult = new EventNavigationResult(fromAction, outcome);
在 Liferay Faces Customers and Bookings portlet demo 中有一个这样的工作示例。
我有一个显示所有学生的导航 portlet,当一个学生被点击时,我会向其他 portlet 发送一个带有被点击学生 ID 的事件。发送和接收事件不是问题,可以正常工作。我不明白的是如何处理对象的 ID。
如何更新接收事件的 portlet 以显示它们接收到的对象的数据。由于我只得到id,第一步是在数据库中搜索并获取所有数据,然后更新portlets视图。
这是我的事件处理程序:
hskaId 是我需要的对象的 ID。
public class ReceivedFeedbackEventHandler implements BridgeEventHandler{
@Override
public EventNavigationResult handleEvent(FacesContext facesContext, Event event) {
EventNavigationResult eventNavigationResult = null;
String eventQName = event.getQName().toString();
if (eventQName.equals("{http://liferay.com/events}ipc.studentSelected")) {
System.out.print("EVENT RECIVED STUDENT");
String hskaId = (String) event.getValue();
}
if(eventQName.equals("{http://liferay.com/events}ipc.projectSelected")) {
System.out.print("EVENT RECIVED PROJECT");
}
return eventNavigationResult;
}
}
在 Portlet 的 ManagedBean 中,我调用它来获取 hskaId 的所有学生。 "hskaId" 现在所在的位置,接收到的事件值应该去哪里。
Student student = StudentLocalServiceUtil.findByProjectId("hskaId");
如何将事件的接收值获取到 ManagedBean 并更新视图?
这是一个交叉帖子:Link
您需要通过 ELContext
.
ManagedBean
以下是您应该如何操作:
String elExpression = "#{studentsModelBean}";
ELContext elContext = facesContext.getELContext();
ValueExpression valueExpression = facesContext.getApplication().getExpressionFactory().createValueExpression(elContext, elExpression, StudentsModelBean.class);
StudentsModelBean studentsModelBean = (StudentsModelBean) valueExpression.getValue(elContext);
String hskaId = (String) event.getValue();
studentsModelBean.setStudent(hskaId);
String fromAction = null;
String outcome = "ipc.studentSelected";
eventNavigationResult = new EventNavigationResult(fromAction, outcome);
在 Liferay Faces Customers and Bookings portlet demo 中有一个这样的工作示例。