h:commandbutton vs h:commandlink
我们正在使用JSF-2.1.7并以所有形式发布请求。我试图证明是使用
推荐使用哪个
除了生成的标记和外观之外,没有功能上的区别。
如果需要提交按钮,请使用
简而言之,我的建议是将
冗长的解释如下:
首先,有一些背景知识:人们可能还应该意识到不同的
-
type="submit" (如果省略,则默认为默认值)执行表单的正常"提交"行为(即,POST表单)以及action 和/或actionListener 。 -
type="reset" 执行正常的"重置"行为(即清除/重置表单字段),而无需调用任何action 和/或actionListener 。 -
type="button" 生成一个按钮(显然<input type="button"> 比<button> 标记受限制),而不调用任何action 和/或actionListener 。
除了重置字段外,后两个字段似乎仅对激活例如Javascript。他们不发布表单。
所以要回答这个问题:在表单上下文中:
-
<h:commandButton> (等效于<h:commandButton type="submit"> ,请记住)通常是最有用的,尤其是当大多数浏览器现在都实现了按下Enter时激活形式在DOM树中找到的第一个提交按钮。这可能会改善您的表单的用户体验
例如使用以下命令登录会更快:
与
相对
还请记住,Tabing仍然可以通过键盘访问任何
-
但是,对于应该执行其他操作而不是提交(或"只是"清除字段")表单上的其他按钮,
<h:commandLink> 更合适。仍然可以通过键盘通过Tabing达到此目的,直到(CSS样式为按钮)具有焦点,然后再设置Enter。请注意,这与使用 <h:commandButton> 生成的按钮不一致,该按钮可能采用CSS样式,以使其看起来相同,但浏览器的处理方式不同(Tab ... Spacebar)。
这是一般的解释,但是您可能需要注意一些问题...
当表单上没有
您还应该确保CSS样式选择器是正确的。
-
A.mystyle 适用于<h:commandLink> ; -
INPUT[type=submit].mystyle 至<h:commandButton type="submit"> ; -
INPUT[type=reset].mystyle 至<h:commandButton type="reset"> ; -
INPUT[type=button].mystyle 至<h:commandButton type="button"> ;
这些当然可以用逗号连接起来作为单个样式定义的选择器。或者,如果您想冒把其他样式设置为mystyle按钮的风险,则可以省略
-
SPAN.mystyle 定义,用于禁用链接或按钮的时间(例如,通过disabled 属性)-这使您可以为禁用的按钮提供淡化(灰色)外观。
我还遇到了一些高度差异(按钮上的行高与链接上的内容高-如果您的按钮包含背景图像作为图标而不是文本,则可能会出现问题),并且
这是我的摘要备忘单:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | JSF <h:commandButton <h:commandButton <h:commandButton <h:commandLink> type="submit"> type="reset"> type="button"> Translates to <input <input <input type="submit"> type="reset"> type="button"> Submit form POST no, clears flds no POST Javascript events YES YES YES YES action{Listener} YES no no YES Enter on form activates YES no no no Tab...+Enter activates YES(*) YES YES YES Tab...+Space activates YES(*) YES YES no Highlight on Tab-focus: - Firefox 32 YES no no no - Chrome 41 YES YES YES YES - Internet Explorer 11 YES YES YES YES - Opera 28 YES YES YES no(*) (*=Opera 28 seems not to allow tabbing (or Alt+Arrow) to hyperlinks to activate them.) |
对于表单,我更喜欢h:commandbutton
h:commandbutton就像HTML中的一个按钮,您可以在其中设置备用bean的动作。
h:commandlink就像HTML中的链接(标记a)一样,您还可以在其中设置支持bean
的操作
要在JSF中使用CSS样式,可以使用属性'styleClass'。
如果我错了,请纠正我,但是两者之间的第一个区别是事实,
第二个是这两个在网页中的行为。
虽然