1

我有一个显示记录的循环,我想向所有行添加提交按钮。他们需要提交的原因是,当用户选择其中一个按钮时,我希望在底部有一个表单。

我已经看到有关使用延迟等的评论,但似乎没有什么对我有用。我正在尝试的当前提交代码是:

<input t:id="deleteItem" t:type="submit" t:context="item.number.content"   value="deleteItem" class="deleteItem" />

扩展上下文:我列出的当前上下文只是 item 对象中 number 对象中的一个字符串。事实上,它在上面的代码中显示得非常好。

为了进行不同的测试,我用 getContext() 方法替换了 item.number.content 并让它返回一个硬编码的 1。然后我调试这个方法并看到它在页面提交时被调用,而不是页面像我预期的那样呈现。

直到按下按钮后才会填充上下文。我是不是误会了什么??

编辑:

所以我的问题是获取上下文值。以我的代码为例:

<t:loop source="itemsList" value="item" formState="none">
<!-- Display info here -->
<input t:id="deleteItem" t:type="submit" t:context="myContext" value="deleteItem"    class="deleteItem" />  
</t:loop>

getMyContext 的定义是:

public String getMyContext() {
    String context = item.getNumber().getContent();
    return context;
}

问题是,在按下提交之后,该方法才会被调用,此时变量“item”为空。我期望每次呈现提交按钮时都会调用 getMyContext ,然后在选择提交时,将使用适当的上下文触发事件。那有意义吗?

4

2 回答 2

3

我终于弄清楚我的问题是什么:

formState="none" 

我最初这样做是因为在我的对象和字符串之间进行转换时遇到了问题。选择此选项后,提交按钮无法正常工作。我最终将其更改为 formState="iteration" 现在它的工作方式完全符合我的预期(而且我也需要按预期进行延迟)。

于 2012-04-09T19:03:55.957 回答
1

尝试将以下内容添加到您将此 t:submit 添加到的页面/组件中:

@OnEvent(component = "deleteItem")
private void handleSubmit(Integer contextValue) {
     //Do whatever you need to do with the passed context value here.
     //Most commonly you would store the context in a java page/component field to 
     //be used by the form eventhandler to do some sort of CRUD
}

呈现页面时不会写出上下文值,它会在提交表单时作为参数传递给您的事件处理程序。所以你看到的是正确的行为。

于 2012-04-06T06:40:17.703 回答