你好需要一点帮助。
我正在使用 Spring 和 portlet,我的问题是我有 2 个选项卡由两个带有 2 个 bean 的不同控制器处理。我需要的是在第二个控制器的渲染阶段显示来自第一个控制器的 bean 的数据。
我尝试执行以下操作:
这是第一个选项卡的控制器,我在其中收集必要的值并使用它们生成请求。
@Controller
@RequestMapping(ServletContextKeys.SC_VIEW_MODE)
//This is my bean session
@SessionAttributes(salarioBean)
public class AltaSalarioFSOPortletController extends BaseController {
private SalarioBean salarioBean;
//With this method generated the request to display the data in the other controller jsp
@RequestMapping(params = ACTION_CAMBIA_TAB)
public final String doRenderTab(@ModelAttribute(value = "SalarioBean") SalarioBean salario, Errors errors, RenderRequest renderrequest, PortletSession portletSession) {
//retrieve the bean managed by Spring in session
SalarioBean salarioSessionBean = (SalarioBean) portletSession.getAttribute(salarioBean);
ImputacionBean imputacionBean = new ImputacionBean();
....Insert data on imputacionBean
//generated the request to display data in jsp handled by another controller
renderrequest.setAttribute(imputacionBean,imputacionBean);
//redirected to jsp
return jsp_tab2;
}
使用此控制器在 jsp 中显示数据,但是当单击另一个选项卡时尝试生成相同的数据时,我的问题就出现了。所以我尝试在另一个控制器中使用这个方法渲染:
@Controller
@RequestMapping(ServletContextKeys.SC_VIEW_MODE)
@SessionAttributes(imputacionBean)
public class AsociarCostesSalarioAlumnoPortletController extends BaseController {
private ImputacionBean imputacionBean;
@RequestMapping(params = ACTION_ASOC_COSTES_SALARIO)
public final String doRender(@ModelAttribute(value = "ImputacionBean") ImputacionBean imputacionSalarioAlumno,Errors errors, RenderRequest renderrequest,SessionStatus status) {
justifSessionBean = (SalarioBean) renderrequest.getPortletSession().getAttribute(salarioBean);
ImputacionBean imp=(ImputacionBean) justifSessionBean.getImputaciones().get(0);
renderrequest.getPortletSession().setAttribute(imputacionBean,imp);
setJustificanteAsociarCostesSalarioAlumno(imp);
setRequestParameters(renderrequest, imp);
return jsp_tab2;
}
@Override
public final void setRequestParameters(RenderRequest renderrequest, Object object) {
ImputacionBean imputacionSalarioAlumno = (ImputacionBean) object;
renderrequest.setAttribute(imputacionBean, imputacionSalarioAlumno);
renderrequest.getPortletSession().setAttribute(imputacionBean,imputacionSalarioAlumno);
}
public final void setJustificanteAsociarCostesSalarioAlumno(ImputacionBean imputacionSalario) {
this.imputacionBean = imputacionSalario;
}
第一次处理 spring 的 bean 是对象空的。我的问题是:如何设置从第一个控制器处理 Spring 的会话 bean?所以在生成请求时,这个 bean 包含数据。
我需要更改处理 Spring 的 bean 以使用此数据生成新请求。
谢谢您的帮助。如果有什么你不明白的,我会尽力解释得更好。