在liferay portlet中实现Edit

时间:2012-06-27 10:01:10

标签: java jsp liferay portlet

我正在开发一个liferay portlet。这是我在jsp文件中的代码:

<table class="DDGridView">
<tr class="td">
    <td class="th">Complex Name</td>
    <td class="th">City</td>
    <td class="th">Status</td>
</tr>
<%
    Complex complex;
    for(int i = 0 ; i < complexList.size(); i++)
    {
        complex = (Complex)complexList.get(i);
%>
        <tr class="td">
            <td><%=complex.complexName %></td>
            <td><%=complex.complexCity %></td>
            <%
                if(complex.isActive == 1)
                {
            %>              
                    <td class="th">Active</td>
            <%
                }
                else
                {
            %>
                    <td>Not Active</td>
            <%
                }
            %>
            <td><a href="<%=prepareEditComplexURL%>">Edit</a></td>
            <td><a>Delete</a></td>
        </tr>
<%
    }
%>  
</table>

当用户点击Edit url时,我想将选定的行项发送到portlet类。但我不知道该怎么做。我怎么能这样做?

2 个答案:

答案 0 :(得分:4)

根据您的评论,您似乎需要帮助构建网址。

因此,您可以在for循环内构建URL,如:

如果您想使用这些详细信息来执行某些数据库操作,例如updateinsert

<portlet:actionURL var="preparedEditComplexURL">
    <portlet:param name="complexName" value="<%=complex.complexName %>" />
    <portlet:param name="complexCity " value="<%=complex.complexCity %>" />
    <portlet:param name="status " value="<%=complex.isActive %>" />
</portlet:actionURL>

或者,如果您想根据这些字段渲染(或显示)某些页面,请使用渲染URL,如下所示:

<portlet:renderURL var="preparedEditComplexURL">
    <portlet:param name="complexName" value="<%=complex.complexName %>" />
    <portlet:param name="complexCity " value="<%=complex.complexCity %>" />
    <portlet:param name="status " value="<%=complex.isActive %>" />
</portlet:renderURL>

如果您可以参考有关portletURL的一些概念以及如何使用它们,它也会有所帮助。有很好的教程,Portlets in Action是一本关于portlet开发几乎所有概念的好书。

希望这有帮助。

答案 1 :(得分:1)

Prakash K回答它非常好!只需添加一个有用的东西。 创建portlet操作URL时,可以指定名称属性,如

<portlet:actionURL name="preparedEditComplex" var="preparedEditComplexURL">
    <portlet:param name="complexName" value="<%=complex.complexName %>" />
    <portlet:param name="complexCity " value="<%=complex.complexCity %>" />
    <portlet:param name="status " value="<%=complex.isActive %>" />
</portlet:actionURL>

因此,在您的portlet类中,您可以像这样调用您的方法:

Liferay 6.x

public preparedEditComplex(ActionRequest actionRequest, ActionResponse actionResponse) {
    //Your implementation
    ...
}

Liferay 5.2

@ProcessAction(name="preparedEditComplex")
public preparedEditComplex(ActionRequest actionRequest, ActionResponse actionResponse) {
    //Your implementation
    ...
}

通过这种方式,您可以编写更清晰,更易读的代码。 :)

干杯