(1) <a:commandButton>和<h:commandButton>这个都需要form表单才能触发的事件。
(2) <s:button>不需要form表单就可以触发事件。它主要是用来view功能的,很少用它来调用后台方法的。
(3) commandButton有这样的用法:当点击它后然后会看到什么样的效果用reRender来“重绘”下,即刷新。
<h:commandButton value="Create" action="#{templateBean.CreateDirectory()}">
<a:support event="onclick" reRender="scanTree" />
</h:commandButton>
(4)<a:commandButton value="Save" action="#{webSiteTemplate.saveFile}" oncomplete="JavaScript:if(confirm('Are you sure to save it?')){return true;}else{return false;}" />
这里要说下a:commandButton它如果想要在其后面有JS的事件必须是这样写:oncomplete事件里面写,而不是onclick事件里面,否则它不会去执行action里面的方法的。其实我这里的说法是错误的,经过我的反复试验,结果证明:
如果用oncomplete的话,不管你点不点"确认"或者"取消",它都会去执行action里面的代码。但是如果用onclick的话,应该是这样来用的:
<a:commandButton value="Save" οnclick="JavaScript:if(confirm('Are you sure to save it?')){}else{return false;}" action="#{webSiteTemplate.saveFile}" reRender="fileText" />
那个{}里面什么都不写的,如果写了return true; 的话,就不会去执行action里面的方法了。
(5)我们cms中平常的delete功能代码是用s:link和上面的(4)一定要比较下:
<s:link view="/siteadmin/SiteList.xhtml"
value="Delete"
id="siteDelete"
propagation="end"
action="#{siteHome.remove}" οnclick="JavaScript:if(confirm('Are your sure to delete it?')){return true;}else{return false;}">
<f:param name="siteId" value="#{_site.id}"/>
</s:link>
这里就是平常的那种有{return true;}else{return false;}的情况。
(6)按钮s:button的解说:
一个按钮,通过它支持一个具有控制对话传播的动作的调用。不提交表单。
属性
value — 标签。
action — 一个绑定了指定的动作侦听器的方法。
view — 链接到的JSF视图id。
fragment — 链接到的片段标识符。
disabled — 链接是禁用状态吗?
propagation — 判断对话传播样式:begin, join, nest, none 或 end。
pageflow — 开始一个页面流定义。(当使用propagation="begin"或 propagation="join"时才有用)。
用法
<s:button id="cancel" value="Cancel" action="#{hotelBooking.cancel}"/>
你可以在<s: button />内指定view和action。在这种情况下,动作会被调用,并马上重定向到指定的已发生的视图 。
动作侦听器(包括默认的JSF动作侦听器)的用法不支持<s:button />。
<s:link>
描述
一个链接,通过它支持一个具有控制对话传播的动作的调用。不提交表单。
动作侦听器(包括默认的JSF动作侦听器)的用法不支持<s:link />。
属性
value — 标签。
action — 一个绑定了指定的动作侦听器的方法。
view — 链接到的JSF视图id。
fragment — 链接到的片段标识符。
disabled — 链接是禁用状态吗?
propagation — 决定对话传播样式:begin, join, nest, none 或 end。
pageflow — 开始一个页面流定义。(当使用propagation="begin"或 propagation="join"时才有用。)
用法
<s:link id="register" view="/register.xhtml" value="Register New User"/>
你可以在<s:link />内指定view和action。在这种情况下,动作会被调用,并马上重定向到指定的已发生的视图 。