如何通过liferay搜索容器获得可编辑字段?

时间:2014-05-05 13:50:28

标签: liferay portlet liferay-6

我是liferay开发的新手。

我已经做了很好的工作来使用liferay搜索容器显示liferay网格。

但现在要求网格中的某些字段应该由用户修改。

是否可以通过liferay搜索容器或者我是否需要遵循任何其他方法来实现可编辑的liferay网格?

1 个答案:

答案 0 :(得分:0)

您可以使用<liferay-ui:search-container-column-jsp标记或直接使用<aui-input />标记内的<liferay-ui:search-container-column-text

示例(我已经在代码示例中包含了代码注释以供您理解):

<liferay-ui:search-container
    emptyResultsMessage="no-assets-selected"
    iteratorURL="<%= configurationRenderURL %>"
    total="<%= assetEntries.size() %>"
>
    <liferay-ui:search-container-results
        results="<%= assetEntries.subList(searchContainer.getStart(), searchContainer.getResultEnd()) %>"
    />

    <liferay-ui:search-container-row
        className="com.liferay.portlet.asset.model.AssetEntry"
        escapedModel="<%= true %>"
        keyProperty="entryId"
        modelVar="assetEntry"
    >

        <aui:form action="doesThisWork?">

            <%-- this is the normal way --%>
            <liferay-ui:search-container-column-text
                name="type"
                value="<%= assetRendererFactory.getTypeName(locale, false) %>"
            />

            <liferay-ui:search-container-column-date
                name="modified-date"
                value="<%= assetEntry.getModifiedDate() %>"
            />

            <%--
                this is the JSP way 
                You can include anything in the JSP like <input /> fields, textarea, select drop-down etc.
            --%>
            <liferay-ui:search-container-column-jsp
                align="right"
                path="/html/portlet/asset_publisher/asset_selection_action.jsp"
            />

            <%--
                Here is including <input /> field inside the column text field.
                Notice I am not using the "value" attribute of this tag, instead I am
                writing HTML inside the body of this tag.
            --%>
            <liferay-ui:search-container-column-text
                name="type"
            >
                <aui:input type="text" name="enterSomething" value="I can enter input here" />
                <aui:input type="text" name="enterSomething" value="<%=assetEntry.getTitle %>" />
                <aui:input type="hidden" name="enterSomething" value="this is a hidden field of the form" />
            </liferay-ui:search-container-column-text>

        </aui:form>
    </liferay-ui:search-container-row>

    <liferay-ui:search-iterator paginate="<%= total > SearchContainer.DEFAULT_DELTA %>" />
</liferay-ui:search-container>

在上面的示例中,每行都会有<form>,因此您可以在每行的末尾添加一个提交按钮来提交该行的数据。

但你也可以通过其他方式做到这一点:

  1. 您可以在Search-container标记之外编写<form>,这样您就可以拥有一个表单并可以提交所有行数据以收集
  2. 或者你可以在页面的某个地方有一个<form>,然后通过javascript填充表单中的值,然后提交。
  3. 否则你可以使用ajax和其他东西来实现这一目标。或者是几种方法的组合。
  4. 我把这个留给你弄清楚。

    免责声明:我尚未测试此代码。但根据我的理解,这应该有效。 : - )