【问题标题】:How to use a different view for creating and for updating in OpenXava?如何使用不同的视图在 OpenXava 中创建和更新?
【发布时间】:2021-03-30 17:50:46
【问题描述】:

默认情况下,OpenXava 使用相同的视图来创建新实体和更新现有实体。有没有办法对每种情况有不同的看法?

【问题讨论】:

    标签: java openxava


    【解决方案1】:

    显然,您必须定义一个用于创建的视图和另一个用于更新的视图,因此:

    @View(name="Create", members=" ... ")
    @View(name="Update", members=" ... ")
    public class MyEntity { ...
    

    现在您必须细化用于选择“创建”视图的新操作和用于选择“更新”视图的搜索操作。首先,在你的 controllers.xml 中定义你自己的控制器,这样:

    <controller name="MyTypical">
        <extends controller="Typical"/>
        
        <action  name="new" 
            class="com.mycompany.myapplication.actions.MyNewAction"
            image="new.gif"
            icon="library-plus"
            keystroke="Control N"
            loses-changed-data="true">
            <set property="restoreModel" value="true"/>         
        </action>
    
        <action name="search" hidden="true"         
            class="com.mycompany.myapplication.actions.MySearchAction"/>
            
    </controller>
    

    现在将此控制器分配给您的模块,并为模块定义搜索操作。用这种方式在 application.xml 中编写你的模块:

    <module name="MyModule">
        <env-var name="XAVA_SEARCH_ACTION" value="MyTypical.search"/>
        <model name="MyEntity"/>
        <controller name="MyTypical"/>
    </module>
    

    现在只剩下完善你的行动逻辑了。对于您编写的 MySearchAction(注意:必须捕获选定的实体索引值 (1),以便在 setViewName(...) 方法 (2) 执行重置后将其恢复 (3)):

    public class MySearchAction extends SearchByViewKeyAction {
    
        public void execute() throws Exception {
            Map mapIndexValues = getView().getKeyValuesWithValue();   //1
            getView().setViewName("Update");                          //2
            getView().setValues(mapIndexValues);                      //3
            super.execute();
        }
    
    }
    

    对于 MyNewAction:

    public class MyNewAction extends NewAction {
    
        public void execute() throws Exception {
            getView().setViewName("Create");
            super.execute();
        }
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多