我有一个jsp,我在那里显示一些人说员工的数据。 每个员工的数据显示为一行。 我已将每一行作为链接,以便当用户点击任何提供特定员工详细信息的行时, 用户被定向到一个jsp,它显示员工的相同数据,以便进行进一步的处理。
我的问题是,当用户点击包含该特定员工信息的行时,我应该如何传递员工的数据?
我现在所做的是:
<portlet:renderURL var="viewPendingLeaveApplicationsURL"/>
<liferay-ui:search-container delta="20" emptyResultsMessage="No Results Found">
<liferay-ui:search-container-results total="<%= pendingApprovals .size() %>"
results="<%= ListUtil.subList(pendingApprovals , searchContainer.getStart(), searchContainer.getEnd()) %>" />
<liferay-ui:search-container-row keyProperty = "empId" modelVar="search"
className="com.corpserver.mallyas.mis.portal.model.LeaveApplication">
<portlet:renderURL var="leaveApplicationURL">
<portlet:param name="jspPage" value="/admin/AddCompany.jsp" />
<portlet:param name="search" value='<%String.valueOf(search.getEmpId());%>'/>
</portlet:renderURL>
<liferay-ui:search-container-column-text name='Leave Duration' value='<%=String.valueOf(search.getLeaveDuration())%>' href="<%= leaveApplicationURL.toString()%>" />
<liferay-ui:search-container-column-text name="From" value='<%=String.valueOf(search.getLeaveFromDate())%>' href="<%= leaveApplicationURL.toString()%>"/>
<liferay-ui:search-container-column-text name="To" value='<%=String.valueOf(search.getLeaveToDate())%>' href="<%= leaveApplicationURL.toString()%>"/>
<liferay-ui:search-container-column-text name="Reason" value='<%=String.valueOf(search.getLeaveReason())%>' href="<%= leaveApplicationURL.toString()%>"/>
<liferay-ui:search-container-column-text name="Remarks" value='<%=String.valueOf(search.getLeaveRemarks())%>' href="<%= leaveApplicationURL.toString()%>"/>
</liferay-ui:search-container-row>
<liferay-ui:search-iterator/>
</liferay-ui:search-container>
在上面的代码中,我试图传递用户选择的行的empId
。
但是在第二个jsp中没有显示任何内容。我想在第二个jsp上传递所有这些信息。
答案 0 :(得分:3)
我发现代码中存在一个小问题,问题在于生成URL的方式:
<portlet:renderURL var="leaveApplicationURL">
<portlet:param name="jspPage" value="/admin/AddCompany.jsp" />
<portlet:param name="search" value='<%String.valueOf(search.getEmpId());%>'/>
</portlet:renderURL>
这一行:
<portlet:param name="search" value='<%String.valueOf(search.getEmpId());%>'/>
应该是:
<portlet:param name="search" value='<%= String.valueOf(search.getEmpId()) %>'/>
您是否注意到这一点: <%=
String.valueOf(search.getEmpId())%>
,添加的内容与<%=
类似,后面的;
已删除。
简而言之,value
属性中需要jsp expression
而不是scriptlet code block。
答案 1 :(得分:1)
您需要使用<portlet:actionURL />
而不是渲染一个。
<portlet:actionURL var="leaveApplicationURL">
<portlet:param name="jspPage" value="/admin/AddCompany.jsp" />
<portlet:param name="search" value= '<%String.valueOf(search.getEmpId());%>'/>
</portlet:actionURL>
@ProcessAction(name = "gotToEmployee")
public void changeCurrency(ActionRequest request, ActionResponse response) {
//perform here any action you want, like search in DB
response.setRenderParameter("search", request.getParameter("search"));
response.setRenderParameter("page", request.getParameter("jspPage"));
}
然后在渲染方法中使用此参数。