JSF 的采用和普及

2024-02-11

只是一个一般性问题,欢迎讨论...

到目前为止,我非常喜欢 JSF,我对它还很陌生,但我更喜欢它而不是 Struts。从专业人士的角度来看,您认为 JSF 的未来光明吗?作为一个年轻的程序员,值得投资学习 JSF 2.0 而不是 Struts 或其他类似的框架吗?我应该坚持使用常规 JSP 吗?通过 JQuery 进行 Ajax 真的比 JSF 更简单吗?

我喜欢新技术,也喜欢迄今为止从 JSF 中看到的东西,但我也希望实用,大量 Google 搜索都会出现一些关于 JSF 2.0 的直言不讳的批评评论。

想法?


将 JSF 与 Struts 进行比较就像将苹果与橘子进行比较。 Struts 是基于请求/操作的 MVC 框架,而 JSF 是基于组件的 MVC 框架。 Struts 也已经老化了。在 IT 行业,你应该不断前进。通常,基于组件的 MVC 框架被视为基于请求/操作的 MVC 框架的进一步发展。

JSF 目前已经得到非常广泛的应用。此前确实受到了不少批评。您可以在问题中阅读其中的大部分内容JSF 2.0 的主要缺点是什么? https://stackoverflow.com/questions/3623911/what-are-the-main-disadvantages-of-java-server-faces-2-0JSF 的优势主要在于它是 Java EE 维护的标准以及相对大量的 3rd 方组件库的可用性(PrimeFaces http://primefaces.org, 丰富的面孔 http://jboss.org/richfaces, IceFaces http://www.icefaces.org, 开放面孔 http://openfaces.org/, Tomahawk http://myfaces.apache.org/tomahawk, ETC)。使用 JSF,可以非常轻松地快速开发外观漂亮的 CRUD 应用程序和 Web 表单。

然而,当JSF进入综合体时,可能会引起一些意想不到的意外。尽管 JSF 规范和参考实现 (Mojarra) 自最新的 1.2 版本以来已经相当成熟,但您可能会遇到一些与您的直觉相悖的非常具体的行为问题。有些只是“设计使然”,只有详细了解后才能理解howJSF 在幕后工作,这通常归结为 HTTP 协议的无状态本质。 JSF 从本质上“太多”地抽象了它,以至于您不再看到它。有些只是所使用的第 3 方组件库中的错误,但这并不是严格特定于 JSF 实现的。然而,如果您及时报告错误,大多数主要组件库中的错误/问题处理都相当不错。

至于 ajaxical 的东西,JSF 2.0 确实提供了很少的手动控制来手动触发 ajaxical 请求以及控制服务器端和客户端的视图树。很简单,因为它是一个基于组件的 MVC 框架,可以在两侧保留树状态。当你自己手中的阿贾克斯作品时,你必须考虑到双方。如果你really在基于 ajax/请求的操作中需要更多自由,那么基于组件的 MVC 框架根本就是错误的选择。您应该选择基于请求/操作的 MVC 框架(例如 Spring MVC、Struts 或 Stripes)以及 JS 库(例如 jQuery)。然而,您必须自己编写大量 HTML/CSS/JS 样板文件。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JSF 的采用和普及 的相关文章

随机推荐

  • Heroku 和 Zerigo 设置问题

    EDIT2 等待查看我的更改是否成功 编辑 我使用命令行 Zerigo install 命令重新安装了所有内容 最初的问题是手动设置 现在的问题是 我设置的自定义域无法正常工作 访问自定义域只会在 Chrome 中返回错误 哎呀 Googl
  • 用于构建成就系统的 Ruby/Rails 现代化工具

    我有兴趣为我的 Ruby on Rails 应用程序构建一个强大的成就系统 成就可以通过多种方式实现 通常 我们会有一些可能发生在多个模型上的标准 一些是必需的 一些是触发成就的可选 混合和匹配 我想说这类似于此处或 Foursquare
  • WPF-Prism CanExecute 方法未被调用

    我正在编写一个简单的登录用户控件 其中包含两个文本框 用户名和密码 和一个登录按钮 我希望仅在填写用户名和密码字段时启用登录按钮 我正在使用 Prism 和 MVVM LoginViewModel 包含一个名为 LoginCommand 的
  • 如何替换 Postgres 中的表?

    基本上我想这样做 begin lock table a alter table a rename to b alter table a1 rename to a drop table b commit 即获得控制权并替换我的旧桌子 而没有人
  • java.lang.ArrayIndexOutOfBoundsException : 0 是什么意思

    我的编译器一直指向这一行 arr i new specialDelivery name name2 weight special 和这个 arr i new specialDelivery name name2 weight special
  • Qt5参考文档:qch文件

    我想在 QtAssistant 中查看 Qt 参考文档 但是 Qt5 的安装没有附带 Qt 库的 qch 文档文件 我试图在http qt project org http qt project org但到处都找不到它们 如何获取 Qt5
  • 如何禁用 reCAPTCHA Flask App Builder

    我是 Flask 应用程序构建器的新手 正在尝试设置用户注册 但出于我的目的 我不需要 reCAPTCHA 有没有办法在配置文件中禁用 reCaptcha 我的配置文件如下所示 Uncomment to setup Public role
  • 在调用中使用查询参数时缓存记录? Ember-数据

    我有这条路线检索 2 个模型 App PanelRoute Ember Route extend model function var topologymin this store find topologymin var metricma
  • 自定义字体 Xcode 4.3

    我正在尝试使用这个字体 http www dafont com chalkboard font在我的项目中 但它不起作用 我在项目中添加了 ttf 文件 并将其名称添加到 MyApp Info plist 的键下 应用程序提供的字体 然后我
  • 匿名函数的上下文是什么?

    我有这样的代码 function demo this val 5 function this val 7 现在 当我在 Firefox 或 Chrome 控制台中执行此代码时 它会出现语法错误 我不明白为什么这是一个错误 因为我读过 jav
  • 为什么状态对组件可见?

    据我了解 vuex 的重点是通过仅通过突变 操作 获取器将其暴露给组件来保证状态的一致性 但是 组件可以直接操作 store state 而不使用突变 操作 可能会导致状态不一致 为什么vuex状态直接暴露出来 使用突变 动作 吸气剂等是建
  • 在页面刷新/导航时保留 Twitter Bootstrap 折叠状态

    我正在使用 Bootstrap 折叠 插件为一长串链接制作一个手风琴 Accordion body 标签包含 collapse 因此页面加载时所有组都会折叠 当您打开一个组并单击链接时 它会将您带到一个新页面以查看一些详细信息 然后单击后退
  • Matplotlib 中的日期和时间间隔绘图

    pyplotplot date函数期望以某种线条样式绘制日期和值对 是否有推荐的方法根据日期 时间值绘制多个值或间隔数据 要绘制间隔数据 您可以使用由错误栏 功能及用途axis xaxis date 使 matplotlib 格式化轴 例如
  • Hadoop Namenode 元数据 - fsimage 和编辑日志

    据我所知 出于性能原因 fsimage 在启动时加载到内存中 并且任何进一步的事务都会添加到编辑日志中 而不是添加到 fsimage 中 当namenode重新启动时 内存中的fsimage会被刷新 为了提高效率 辅助名称节点定期执行检查点
  • ckeditor 未加载通过 ajax 调用生成的元素?

    我正在使用自定义表单并通过 ajax 调用生成表单元素 但 textarea 未使用 ckeditor 加载 这是我的代码 阿贾克斯代码 jQuery ajax type POST url reg arz ajax2 php data bo
  • 如果创建了大写字母,则 TextInput 值上的 toLowerCase 会创建重复文本

    这是一个有趣的 我创建了一个 TextInput 它接受一个值 然后将其小写 将其添加到状态 并将其设置为默认值 在我的 Android 物理设备上 如果您强制使用大写字母 自动大写设置为无 然后快速点击其他字母 它将复制并添加额外的文本
  • graphviz 中的自循环边缘太短且难看

    我用graphviz画了一张图 请参见FSM https i stack imgur com bsVUW png 我认为它很丑 因为自环边缘太短 边缘的属性 minlen 对我不起作用 我尝试了节点的几个端口 但除了我当前的实现之外 一切都
  • PLY - 返回多个令牌

    AFAIK 词法 Python 源代码的技术是 当当前行的缩进级别小于前一行的缩进级别时 产生 DEDENT 如果要关闭多个 INDENT 则生成多个 DEDENT 当到达输入末尾时 如果存在未闭合的 INDENT 则生成 DEDENT 现
  • 带有 codeigniter 的活动菜单选项卡

    Codeigniter中可以使用什么方法来实现活动菜单选项卡 例如我有一个用户菜单Profile Friends Messages Logout 当我在配置文件控制器中时 URL 是domain com profile some funct
  • JSF 的采用和普及

    只是一个一般性问题 欢迎讨论 到目前为止 我非常喜欢 JSF 我对它还很陌生 但我更喜欢它而不是 Struts 从专业人士的角度来看 您认为 JSF 的未来光明吗 作为一个年轻的程序员 值得投资学习 JSF 2 0 而不是 Struts 或