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>
  • 相关阅读:
    Runloop详解
    iOS高效裁剪图片圆角算法
    Runtime详解(下)
    Runtime详解(上)
    iOS UITextfield只允许输入数字和字母,长度限制
    iOS多线程(上)——GCD详解(上)
    @property、@sythesize以及Ivar和@dynamic讲解(下)
    iOS 循环引用讲解(中)
    @property详解,@property修饰符以及各个修饰符区别(上)
    PHP 使用 OSS 批量上传图片
  • 原文地址:https://www.cnblogs.com/voctrals/p/3008854.html
Copyright © 2011-2022 走看看