【问题标题】:JSF Refresh without Ajax没有 Ajax 的 JSF 刷新
【发布时间】:2010-12-07 16:30:20
【问题描述】:

我正在开发一个使用 JSF 1.2 作为视图层的 Web 应用程序。过去,我们已经能够使用 Ajax 来刷新页面的某些部分。但是,我们被要求支持包括 BB OS 5.x 在内的黑莓设备。此设备的默认浏览器对 JS 的支持非常有限。

例如,假设我有一个带有选项(水果、肉类、蔬菜)的初始分类列表

<h:selectOneMenu id="foodCategorySelection" value="#{obj.foodCategory}">
  <f:selectItem itemLabel="Select Food Category..." />
  <f:selectItems value="#{foodService.foodCategories}" />
</h:selectOneMenu>

我想做的是能够刷新页面,以便下一个选择字段仅显示所选食物类别中的食物

<h:selectOneMenu id="foodSelection" value="#{obj.food}">
  <f:selectItem itemLabel="Select a Food..." />
  <f:selectItems value="#{foodService.filteredFoods}" />
</h:selectOneMenu>

有没有一种通用的模式可以用来完成这项工作?我假设必须以某种方式提交表单,以便在刷新食物选项之前将食物类别绑定到支持对象。

【问题讨论】:

    标签: jsf spring-webflow


    【解决方案1】:

    对于那些(有限的)JS支持的人,只需让下拉列表通过JS在更改时提交表单:

    <h:selectOneMenu onchange="submit()">
    

    在 bean 中,根据提交的第一个下拉列表的值填充第二个下拉列表。您可以在附加到第一个下拉列表的 valueChangeListener 方法中执行此操作。

    对于没有任何 JS 支持的用户,在第一个下拉列表旁边添加一个提交按钮,以便最终用户在选择第一个下拉列表中的值后手动提交表单。您在附加到提交按钮的 bean 操作方法中填充第二个下拉列表。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-04
      • 1970-01-01
      • 1970-01-01
      • 2012-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-07
      相关资源
      最近更新 更多