0

我将数据表更改为服务器端处理。从这一点开始,行属性似乎不再起作用。

这是我在 JSP 中对数据表的定义:

<datatables:table id="users" url="/user_User_Json_List_Dandelion.action" serverSide="true" row="user">
        <datatables:column titleKey="user.user.list.username" sortable="false" property="benutzername" />
        <datatables:column titleKey="user.user.list.prename" sortable="false" property="person.vorname" />
        <datatables:column titleKey="user.user.list.surname" sortable="false" property="person.nachname" />
        <datatables:column titleKey="user.user.list.email" sortable="false" property="person.email" />
        <datatables:column cssCellClass="img" sortable="false" cssCellStyle="width: 40px">
            bla<c:if test="${user.gesperrt}">
                <img src="<%=request.getContextPath()%>/static/images/locked.gif" title="<s:text name="%{getText('user.user.list.locked')}"/>"
                    alt="<s:text name="%{getText('user.user.list.locked')}"/>" />
            </c:if>
            <c:if test="${!user.aktiv}">
                <img src="<%=request.getContextPath()%>/static/images/delete.gif" title="<s:text name="%{getText('user.user.list.delete')}"/>"
                    alt="<s:text name="%{getText('user.user.list.delete')}"/>" />
            </c:if>
        </datatables:column>
        <datatables:column cssCellClass="img" sortable="false" cssCellStyle="width: 20px">
            <c:if test="${!user.systemBenutzer}">
                <s:url var="edit" action="user_User_Edit_Pre">
                    <s:param name="benutzerId">${user.benutzerId}</s:param>
                </s:url>
                <s:a href="%{edit}" title="%{getText('user.user.edit.header')}">
                    <img src="<%=request.getContextPath()%>/static/images/edit.gif" title="<s:text name="%{getText('user.user.edit.header')}"/>"
                        alt="<s:text name="%{getText('user.user.edit.header')}"/>" />
                </s:a>
            </c:if>
        </datatables:column>
        <datatables:column cssCellClass="img" sortable="false" cssCellStyle="width: 20px">
            <s:url var="listRights" action="user_Auth_List_Pre">
                <s:param name="benutzerId">${user.benutzerId}</s:param>                   
            </s:url>
            <s:a href="%{listRights}" title="%{getText('user.user.list.listRights')}">
                <img src="<%=request.getContextPath()%>/static/images/user_details.gif" title="<s:text name="%{getText('user.user.list.listRights')}"/>"
                    alt="<s:text name="%{getText('user.user.list.listRights')}"/>" />
            </s:a>
        </datatables:column>
    </datatables:table>

所有像 eg '' 这样的调用都不起作用,因为我打开了服务器端处理,所以没有可用的用户变量。

我来自 Json WebService 的 Json 结果看起来像:

{"data":[{"aktiv":true,"benutzerId":"8a2fde263d8b94000144020a7e066fa5","benutzername":"adm_boegel","gesperrt":false,"systemBenutzer":false},{.....

那么这里出了什么问题?我还能如何访问数据?

谢谢你的帮助。

编辑:

只是为了测试,我将其中一列更改为:

<datatables:column cssCellClass="img" sortable="false" cssCellStyle="width: 40px">
                hello
        </datatables:column>

'hello' 从未在大约 2500 行中打印出来。

编辑2:

每当设置到服务器端时,我只能通过

当不使用服务器端时,我也可以使用行属性和 ${user.gesperrt} 之类的东西

也许它是一个错误?

4

1 回答 1

0

如文档前一章所述

8.3. 自定义列内容

一个人只能使用属性属性来使用列标签,而我使用 renderFunction-property 来调用 java 脚本,然后可以处理一些逻辑。但在我的观察中,这些返回一些 html(如 img-tag)的 java 脚本调用正在减慢渲染速度。

我希望最终服务器端处理会在速度上带来一些好处。

我的蒲公英数据表列看起来像:

        <datatables:column property="aktiv" renderFunction="produceUserLockedIcon"/>

我的java脚本看起来像:

<script type="text/javascript">
    function produceUserLockedIcon(data, type, full) {

        return "testString: " + '<a href="blaa">blaa</a>' + '<img src="<%=request.getContextPath()%>/static/images/locked.gif"\>';
    }
</script>
于 2017-06-21T13:49:56.527 回答