所以,让我告诉我们我的麻烦:)
1 - 当我点击命令按钮
时<h:commandButton value="Somethings">
<f:setPropertyActionListener target="#{bean.method}" value="some" />
<f:ajax render="rendering"/>
</h:commandButton>
我没有对commandButton
执行任何操作。我发起了ajax电话。如果我在按钮上添加一个动作(如action="bean.myAction
),它将在JSF生命周期的5°阶段执行(好吧,只有当我在f:ajax中写了event =“action”,但那是默认的)。对?但f:ajax是通过默认按钮上的cliccing来触发的?因为对于ListBox,例如,只有当我写了event =“change”时才会触发它(同样,我不应该写它,因为它是默认值)。
2 - 当我点击图片
时<h:graphicImage value="img/img.png" alt="img">
<f:setPropertyActionListener target="#{bean.method}" value="some" />
<f:ajax event="onclick" render="rendering"/>
</h:graphicImage>
这不起作用。为什么呢?
像往常一样,感谢您的帮助!!!!
答案 0 :(得分:1)
1 - 当我点击命令按钮
时我不对commandButton做任何动作。我发起了ajax电话。如果我在按钮上添加一个动作(如action =“bean.myAction),它将在JSF生命周期的5°阶段执行
f:setPropertyActionListener
也将在第5阶段执行。
(好的,只有我在f:ajax中写了event =“action”,但那是默认的)。对?但f:ajax是通过默认按钮上的cliccing来触发的?因为对于ListBox,例如,只有当我写了event =“change”时才会触发它(同样,我不应该写它,因为它是默认值)。
f:ajax
只是将行为从同步提交更改为异步(部分)提交。它通过为父组件的所需事件属性(例如onclick
,onchange
等)生成一些额外的JavaScript代码来实现,查看webbrowser中生成的HTML输出。它不会改变JSF生命周期中的任何内容。只有渲染的响应才是部分响应,这正是要在render
属性中定义ID的组件中更新的部分。
2 - 当我点击图片
时这不起作用。为什么呢?
因为h:graphicImage
根本不支持f:setPropertyActionListener
。它仅适用于UICommand
组件。
您希望将其换成h:commandLink
。
<h:commandLink>
<f:setPropertyActionListener target="#{bean.method}" value="some" />
<f:ajax event="action" render="rendering"/>
<h:graphicImage value="img/img.png" alt="img"/>
</h:commandLink>
(如果需要,使用CSS生成的<a>
元素导致边框/下划线的样式)