首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >区域内的挂毯网格更新错误

区域内的挂毯网格更新错误
EN

Stack Overflow用户
提问于 2017-04-27 14:17:41
回答 2查看 660关注 0票数 1

我正在尝试完成一个简单的任务:从数据库中删除一条记录,更新Grid,其中源属性指向用户列表,从DB下载。我在tml中有一个Grid组件:

代码语言:javascript
运行
复制
<div t:type="zone" t:id="deleteZone" id="deleteZone">
<table t:type="grid" source="allAdmins" row="currAdmin" empty="blabla" model="adminTableModel"
           add="delete,lock">
        <p:deleteCell>
          <t:actionlink t:id="delete" context="${currAdmin.}" zone="deleteZone">
              Delete admin
          </t:actionlink> <!--context=""-->
        </p:deleteCell>
    </table>
</div>

在一个页面类中,我有:

代码语言:javascript
运行
复制
public List<AUser> getAllAdmins() {
    return webHelpService.getAllUsers(true);
}

@InjectComponent
private Zone deleteZone;
Object onActionFromDelete(int code) {
    Admins adminToChange = dao.getAdmin(code);
    if(code!=0) {
       dao.deleteAdmin(adminToChange);
    }
    return deleteZone.getBody();
}

但是,当我按下delete按钮时,我会得到以下Tapestry错误:

代码语言:javascript
运行
复制
org.apache.tapestry5.runtime.ComponentEventException: Render queue error in SetupRender.
location: points to line <t:actionlink t:id="delete" context="${currAdmin.code}" zone="deleteZone">

org.apache.tapestry5.ioc.internal.OperationException
location: point to Grid.tml line <thead t:id="columns"/>

java.lang.NullPointerException
 org.apache.tapestry5.internal.beaneditor.BeanModelUtils.add(BeanModelUtils.java:74)
org.apache.tapestry5.internal.beaneditor.BeanModelUtils.modify(BeanModelUtils.java:42)
org.apache.tapestry5.corelib.components.Grid.getDataModel(Grid.java:523)
org.apache.tapestry5.corelib.components.GridColumns.setupRender(GridColumns.java:112)
org.apache.tapestry5.corelib.components.GridColumns.setupRender(GridColumns.java)
org.apache.tapestry5.internal.structure.ComponentPageElementImpl$SetupRenderPhase.invokeComponent(ComponentPageElementImpl.java:174)
org.apache.tapestry5.internal.structure.ComponentPageElementImpl$AbstractPhase.invoke(ComponentPageElementImpl.java:133)
org.apache.tapestry5.internal.structure.ComponentPageElementImpl$SetupRenderPhase.render(ComponentPageElementImpl.java:181)
org.apache.tapestry5.internal.services.RenderQueueImpl.run(RenderQueueImpl.java:72)
org.apache.tapestry5.internal.services.PageRenderQueueImpl.render(PageRenderQueueImpl.java:124)
org.apache.tapestry5.internal.services.PageRenderQueueImpl$1.renderMarkup(PageRenderQueueImpl.java:142)
org.apache.tapestry5.internal.services.RenderCommandComponentEventResultProcessor.renderMarkup(RenderCommandComponentEventResultProcessor.java:78)
org.apache.tapestry5.internal.services.PageRenderQueueImpl$Bridge.renderMarkup(PageRenderQueueImpl.java:62)
org.apache.tapestry5.internal.services.PageRenderQueueImpl.renderPartial(PageRenderQueueImpl.java:159)
org.apache.tapestry5.internal.services.PartialMarkupRendererTerminator.renderMarkup(PartialMarkupRendererTerminator.java:45)
org.apache.tapestry5.services.TapestryModule$37.renderMarkup(TapestryModule.java:2141) 

虽然网格行的部分更改工作良好(不包括该代码),但我不能用Grid组件重新加载整个区域。有人能给我指点方向,完成用户的动态删除操作吗?任何帮助都是非常感谢的!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-05-19 08:34:31

修复模型初始化问题后,我得到了以下工作代码:

代码语言:javascript
运行
复制
<t:zone t:id="deleteZone" id="deleteZone">
        <table t:type="grid" source="adminsSource" rowsPerPage="5" row="currAdmin" inPlace="true" model="adminTableModel" empty="Admins not found" class="t-data-grid table table-bordered">
...
<p:deleteCell>
                <t:actionlink t:id="delete" context="currAdmin.code" zone="deleteZone"
                    ${message:delete}
                </t:actionlink>
</p:deleteCell>

获得模特:

代码语言:javascript
运行
复制
public BeanModel getAdminTableModel() {
        BeanModel<Admin> model;
        model = beanModelSource.createDisplayModel(Admin.class, messages);
        ...
        return model;
}

获取消息来源:

代码语言:javascript
运行
复制
public GridDataSource getAdminsSource() {
        return new HibernateGridDataSource(session, Admin.class);
}

所以,按下delete,我得到了当前显示的网格数据源页面的更新。希望这能帮到别人)

票数 1
EN

Stack Overflow用户

发布于 2017-05-10 08:25:41

我看到了该代码的几个问题:

  1. 网格的add: “.仅在自动创建默认模型时才使用。”https://tapestry.apache.org/5.4/apidocs/org/apache/tapestry5/corelib/components/Grid.html

但与此同时,您正在通过model="adminTableModel"为网格提供自定义模型。

  1. ActionLinkcontext="${currAdmin.}"上下文中的语法错误。最后还有一个额外的点(.)。
  2. syntax for parameter bindings
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43660431

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档