我需要在以这种方式定义的两个标签中共享同一个bean:
<fmt:message var="tabNames" key="message.tab.alta" />
<c:set var="tabValues" value="valtab01,valtab02" />
<portlet:renderURL var="URL01" >
<portlet:param name="action" value="${ServletContextKeys.SC_INSERT}" />
<portlet:param name="${ServletContextKeys.SC_TAB_INSERT}" value="valtab01" />
</portlet:renderURL>
<portlet:renderURL var="URL02" >
<portlet:param name="action" value="${ServletContextKeys.SC_ADD_LIST}" />
<portlet:param name="${ServletContextKeys.SC_TAB_INSERT}" value="valtab02" />
</portlet:renderURL>
<liferay-ui:tabs
names="${tabNames}"
tabsValues="${tabEscrituraValues}"
param="${ServletContextKeys.SC_TAB_INSERT}"
url0="${URL01}"
url1="${URL02}"
value="${insert_tabs}"
/>
所以我需要在代表2个标签的2个jsp中定义一个bean:
<form:form id="formInsert" action="action01" method="post" modelAttribute="myBean" enctype="multipart/form-data">
但我不知道如何让2个jsp共享同一个bean。 我需要在一个选项卡中填充bean的一些数据,并在另一个选项卡上填充一个列表(在同一个bean中)。 填充完所有数据后,从第一个选项卡提交,我将需要控制器中的整个bean(第一个选项卡中的数据和第二个选项卡中的列表) 我很擅长使用portlet,spring和所有这些东西,所以任何帮助都会很棒!
这可能吗??
答案 0 :(得分:1)
如果您想以某种方式记住modelAttribute
的属性,这些属性不在当前标签上,您可以通过多种方式执行此操作:
modelAttribute
注释在会话中保留@SessionAttributes
。这可能是最简单的方法,它完全符合您的要求 - 使JSP“共享”相同的bean - 但我非常不鼓励这样做作为REST倡导者,因为会话在这里相当过分(不是说甚至可能目前使用portlet构建RESTful应用程序。modelAttribute
将其合并我认为后两者非常相似,但是出于一般目的,隐藏的输入可能更容易实现(它们可能需要很少甚至没有控制器代码,例如用于正确的验证)。