Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Tapestry网格内部区域更新错误_Java_Asynchronous_Tapestry - Fatal编程技术网

Java Tapestry网格内部区域更新错误

Java Tapestry网格内部区域更新错误,java,asynchronous,tapestry,Java,Asynchronous,Tapestry,我试图完成一个简单的任务:从数据库中删除一条记录,更新网格,它的源属性指向用户列表,从数据库下载。我在tml中有一个网格组件: <div t:type="zone" t:id="deleteZone" id="deleteZone"> <table t:type="grid" source="allAdmins" row="currAdmin" empty="blabla" model="adminTableModel" add="delete,lock"

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

<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>

删除管理员
在page类中,我有:

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();
}
公共列表getAllAdmins(){ 返回webHelpService.getAllUsers(true); } @注射组分 私家区; 对象onActionFromDelete(int代码){ Admins adminToChange=dao.getAdmin(代码); 如果(代码!=0){ deleteAdmin(adminToChange); } 返回deleteZone.getBody(); } 但当我按下delete按钮时,会出现以下Tapestry错误:

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) 
org.apache.tapestry5.runtime.ComponentEventException:SetupRender中的渲染队列错误。
位置:点到线
org.apache.tapestry5.ioc.internal.OperationException
位置:指向Grid.tml线
java.lang.NullPointerException
org.apache.tapestry5.internal.beaneditor.beamodelutils.add(beamodelutils.java:74)
org.apache.tapestry5.internal.beaneditor.beamodelutils.modify(beamodelutils.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$SetupRenderPase.invokeComponent(ComponentPageElementImpl.java:174)
org.apache.tapestry5.internal.structure.ComponentPageElementImpl$AbstractPhase.invoke(ComponentPageElementImpl.java:133)
org.apache.tapestry5.internal.structure.ComponentPageElementImpl$setupRenderPase.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.partialmarkuprenderterminator.renderMarkup(partialmarkuprenderterminator.java:45)
org.apache.tapestry5.services.TapestryModule$37.renderMarkup(TapestryModule.java:2141)
虽然网格行的部分更改工作正常(未包含该代码),但我无法使用网格组件重新加载整个区域。 有人能给我指点方向,完成用户的动态删除操作吗?
任何帮助都将不胜感激

我发现该代码有几个问题:

  • 网格的
    添加

    “…仅在自动创建默认模型时使用。”

    但同时,您通过
    model=“adminTableModel”
    为网格提供自定义模型

  • ActionLink
    上下文中的语法错误:
    context=“${currAdmin.}”
    。最后还有一个点(


  • 在解决了模型初始化问题后,我得到了以下工作代码:

    <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>
    

    所以,按delete键,我得到当前显示的网格数据源页面的更新。希望这会对某人有所帮助)

    好吧,从那时起,我开始在模型设置中添加新列。根据第三点,已从context=“…”中删除${…},谢谢。此外,我的列表更改为HibernateGridDataSource。但当我在网格表周围添加区域时,我再次在以下位置获得NullPointerException:org.apache.tapestry5.corelib.components.grid$DefaultGridSortModel.getSortConstraints(grid.java:364)org.apache.tapestry5.corelib.components.grid.setupDataSource(grid.java:483)org.apache.tapestry5.corelib.components.grid.setupRender(grid.java:447)org.apache.tapestry5.corelib.components.Grid.setupRender(Grid.java)…在再次阅读API之后,我认为有必要以某种方式使用inPlace=“true”以使网格能够更新。Grid的
    inPlace=“true”
    允许使用AJAX内联更新网格以进行内置分页和排序,在这种情况下,网格确实被区域包裹,您可以使用
    zone=“^”
    从操作链接引用该区域。您发布的错误与您更改以前在HTTP会话中具有排序状态的页面上的网格列时发生的错误类似,应用程序重新启动应该可以修复它。问题在于modell getter:我没有使用getModel(){…}返回新模型,而是使用字段模型,它是在@SetupRender stage中创建的。所以,当我按下grid page或更新区域时,模型为null,所以tapestry尝试应用DefaultGridSortModel,给出了异常
    public BeanModel getAdminTableModel() {
            BeanModel<Admin> model;
            model = beanModelSource.createDisplayModel(Admin.class, messages);
            ...
            return model;
    }
    
    public GridDataSource getAdminsSource() {
            return new HibernateGridDataSource(session, Admin.class);
    }