zoukankan      html  css  js  c++  java
  • Tapestry AjaxFormLoop

    一个AjaxFormLoop控件需要指定source,value,t:id和encoder四个属性。

    source和value跟loop一样。

    而这个encoder必须要提供,因为它与addRow和removeRow有很大的关系。

    另外一个form是必须的。

    这里有几个注意事项

    1 removeRow

    对应着java端的onRemoveRowFromSomeId,而这个SomeId跟t:id的值是一样的。

    2 addRow

    同上,onAddRowFormSomeId。。。

    3 onRemoveRowFromSomeId方法的参数,为value指定的类型。。。

    而value的值为encoder的toValue的值。。。

    4 onAddRowFormSomeId方法的返回值是一个value指定的类型。。。

    所以页面上,必须要有这个value的所有的属性,否则会出错。。。

    public class AjaxFormLoopStudy
    {
    
        @Inject
        private UserService userService;
    
        @Property
        @Persist
        private List<User> userList;
    
        @Property
        private User user;
    
        @SetupRender
        void preparePageBean()
        {
            userList = userService.getAllUsers();
        }
    
        Object onAddRowFromUsers()
        {
            User user = new User();
    
            return user;
        }
    
        void onRemoveRowFromUsers(User user)
        {
            System.out.println(user);
            userService.deleteCurrent(user);
        }
    
        // void onRemoveRowFromUsers(String user)
        // {
        // System.out.println(user);
        // // userService.deleteCurrent(user);
        // }
    
        public ValueEncoder<User> getValueEncoder()
        {
            return new ValueEncoder<User>() {
    
                public String toClient(User value)
                {
                    return value.getId();
                }
    
                public User toValue(String id)
                {
                    return new User(id);
                }
            };
        }
    }
            <t:form t:id="form">
                <t:ajaxformloop source="userList" value="user" t:id="users"
                    encoder="valueEncoder">
                    <input t:type="textField" value="user.id" />
                    <input t:type="textField" value="user.name" />
                    <input t:type="textField" value="user.age" />
                    <input t:type="textField" value="user.story" />
                    |
                    <t:removerowlink>删除</t:removerowlink>
                </t:ajaxformloop>
            </t:form>
  • 相关阅读:
    SQL Server 2008中的hierarchyid
    SQL判断空值、nvl处理与JOIN的使用
    Transact-SQL语法速查手册
    MySQL连接字符串
    如何让spark sql写mysql的时候支持update操作
    基于calcite做傻瓜式的sql优化(三)
    基于calcite做傻瓜式的sql优化(二)
    基于calcite做傻瓜式的sql优化(一)
    spark升级:从1.6升级到2.4.6的记录
    彻底解决,sparkSQL读取csv中Map字段类型的问题
  • 原文地址:https://www.cnblogs.com/voctrals/p/3008854.html
Copyright © 2011-2022 走看看