(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" onclick="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}" onclick="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。在这种情况下,动作会被调用,并马上重定向到指定的已发生的视图 。