Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf h:commandbutton与h:commandlink_Jsf_Jsf 2_Commandbutton_Commandlink - Fatal编程技术网

Jsf h:commandbutton与h:commandlink

Jsf h:commandbutton与h:commandlink,jsf,jsf-2,commandbutton,commandlink,Jsf,Jsf 2,Commandbutton,Commandlink,我们正在使用JSF-2.1.7和所有表单post请求。我试图证明是使用还是。可以使用样式和jQuery控制(href)的外观 建议使用哪一种或?有什么真正的优势吗?除了生成的标记和外观之外,没有功能上的区别。生成HTML元素,生成HTML对于表单,我更喜欢h:commandbutton h:commandbutton就像HTML中的一个按钮,您可以在其中设置支持bean的操作。 h:commandlink类似于HTML中的链接(标记a),您还可以在其中设置支持bean的操作 要在JSF中使用cs

我们正在使用JSF-2.1.7和所有表单post请求。我试图证明是使用
还是
。可以使用样式和jQuery控制
(href
)的外观


建议使用哪一种
?有什么真正的优势吗?

除了生成的标记和外观之外,没有功能上的区别。
生成HTML
元素,
生成HTML

对于表单,我更喜欢h:commandbutton

h:commandbutton就像HTML中的一个按钮,您可以在其中设置支持bean的操作。 h:commandlink类似于HTML中的链接(标记a),您还可以在其中设置支持bean的操作


要在JSF中使用css样式,您可以使用属性“styleClass”。

简而言之,我的建议是混合使用
作为主要(默认)提交按钮和
作为任何附加按钮(例如筛选、排序、查找、预览、生成密码等)

详细解释如下:

首先,一些背景:人们可能还应该知道不同的
类型
属性。(type
属性直接转换为生成的
属性。)我在任何地方都没有发现明确的说明,但一些测试表明:

  • type=“submit”
    (如果省略,则默认为该选项)执行表单的正常“提交”行为(即发布表单)以及
    操作和/或
    操作侦听器
  • type=“reset”
    执行正常的“reset”行为(即清除/重置表单字段)而不调用任何
    action
    和/或
    actionListener
    s
  • type=“button”
    生成一个按钮(显然
    标记有点限制)而不调用任何
    操作和/或
    操作侦听器
除了重置字段外,后两个字段似乎仅对激活(例如Javascript)有用。他们不张贴表格

所以要回答这个问题:在表单上下文中:

  • (记住,这相当于
    )通常是最有用的,尤其是现在大多数浏览器在按下Enter键时激活表单DOM树中的第一个提交按钮。这可能会改善表单的用户体验
例如,使用以下工具登录会更快一些:

  • 用户名选项卡密码输入
  • 相对于

  • 用户名选项卡密码。。。将手从键盘移动到鼠标,搜索指针并定位到按钮上,单击
  • 还请记住,任何
    按钮(可选CSS样式)仍然可以通过键盘通过tab键到达,直到
    (CSS样式为按钮)具有焦点,然后空格键

    • 但是,对于表单上应该执行其他操作而不是提交(或“只是”清除字段)的其他按钮,
      更合适。这仍然可以通过键盘通过tab键来实现,直到
      (CSS样式为按钮)具有焦点,然后输入注意这与使用
      生成的按钮不一致,这些按钮可能是CSS样式,看起来相同,但浏览器处理方式不同(选项卡…空格键)
    这是一般性的解释,但是您可能需要注意一些问题……

    当表单上没有
    按钮时,只有
    按钮(甚至没有按钮),当用户按下Enter键时,表单仍然提交,但没有运行
    操作{Listener}
    的好处。这可能不是什么大问题,因为表单值存储在后台bean中,并在页面加载时再次显示,因此除了服务器往返之外,用户通常不会注意到任何问题。但这可能不是你想要的处理方式。。。。目前我能想到的唯一方法是在表单上放置一个
    onSubmit
    事件,通过Javascript激活默认的
    按钮。。。。啊

    您还应该确保CSS样式选择器是正确的

    • A.mystyle
      应用于
    • 输入[type=submit].mystyle
    • 输入[type=reset].mystyle
    • 输入[type=按钮].mystyle
    当然,这些可以用逗号连接起来,作为单个样式定义的选择器。或者,如果您想冒其他东西被设置为mystyle按钮的风险,您可以省略
    a
    /
    INPUT
    说明符。但是,我已将我的按钮设置为上面的样式,以便我也可以使用:

    • SPAN.mystyle
      链接或按钮被禁用时的定义(例如,通过
      disabled
      属性)-这允许您为禁用的按钮提供一个柔和(灰色)的外观
    我还遇到了一些高度差异(按钮上的行高与链接上的内容高度-如果按钮包含作为图标而不是文本的背景图像,这可能是一个问题),并且在处理伪类的方式上也有一些细微的差异。我的意思是:在
    上测试并重新测试CSS,以确保它们看起来(本质上)相同

    这是我的总结备忘单:

    JSF <h:commandButton <h:commandButton <h:commandButton <h:commandLink> type="submit"> type="reset"> type="button"> Translates to <input <input <input <a> 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.) JSF 转化为 提交表格职位编号,清除flds职位编号 Javascript事件是是是 动作{Listener}是否否否是 在表格中输入“是”