Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/398.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
Java 可用的JSF MVC组件_Java_Jsf_Web Applications_Jakarta Ee - Fatal编程技术网

Java 可用的JSF MVC组件

Java 可用的JSF MVC组件,java,jsf,web-applications,jakarta-ee,Java,Jsf,Web Applications,Jakarta Ee,我是基于Java的web编程新手,正在尝试从头开始学习JSF。我听说JSF被解释为一个完整的MVC解决方案,Facelets是一种纯XML技术,包含MVC体系结构的“视图”组件 因此,在不知道任何更好的方法的情况下,我不禁要问:每个组件都有哪些选择/备选方案?对于这三种(模型、视图和控制器)中的每一种,都有哪些工具/API/libs/技术可以与JSF一起使用。例如,如果正确理解视图基础知识,JSP是Facelets的(旧的/过时的)替代品。还有其他的吗?模型组件如何:我的选项有哪些?控制器 再说

我是基于Java的web编程新手,正在尝试从头开始学习JSF。我听说JSF被解释为一个完整的MVC解决方案,Facelets是一种纯XML技术,包含MVC体系结构的“视图”组件

因此,在不知道任何更好的方法的情况下,我不禁要问:每个组件都有哪些选择/备选方案?对于这三种(模型、视图和控制器)中的每一种,都有哪些工具/API/libs/技术可以与JSF一起使用。例如,如果正确理解视图基础知识,JSP是Facelets的(旧的/过时的)替代品。还有其他的吗?模型组件如何:我的选项有哪些?控制器

再说一次,我现在只想把一切都放在JSF的保护伞下:如果组件作为JSF解决方案的某个部分是兼容的,我想听听它


谢谢你的推荐

我很惊讶巴卢斯克还没有用一个令人恶心的完整答案来回答这个问题。我怀疑他会去做,当他做的时候,我会投赞成票,因为那太棒了,所以不要马上接受我的答案。同时,以下是一些想法:

JSF将是完整的MVC堆栈,重点放在VC上。您已经获得了正确的JSP/Facelets。简单地说,不要使用JSP。使用facelet。它们是JSF2的默认视图技术。它们是基于xml的,可以防止JSF生命周期和JSP生命周期之间的“有趣”交互伤害自己

您将编写java类和导航规则来填充JSF中的控制器角色。您可以将JSF托管bean用于您的服务,也可以使用其他一些框架(如Spring)用于此目的,但您将实现特定的类以用作JSF中的控制器

至于模型。。。好的,任何好的MVC框架都会将模型留给自己。模型不应该知道或关心它在哪个视图中。希望您可以使用JSF、Wicket和Vaadin等任何工具将模型显示在网页中,然后也可以在桌面应用程序或基于RESTful JSON的api中使用它

这里有一些链接,我建议您通过这些链接了解JSF

  • (较老,但会把基本知识记下来)
  • (上文第2部分)
  • (上文第3部分)
  • (马蒂·霍尔教程)

我很惊讶巴卢斯克还没有用一个令人恶心的完整答案来回答这个问题。我怀疑他会想办法解决这个问题,当他这么做的时候,我会投赞成票,因为这太棒了,所以不要马上接受我的答案。同时,我有一些想法:

JSF应该是完整的MVC堆栈,重点放在VC上。您已经正确地使用了JSP/Facelets。简单地说,不要使用JSP。使用Facelets。它们是JSF2的默认视图技术。它们基于xml,可以防止JSF生命周期和JSP生命周期之间的“有趣”交互伤害您自己

您将编写java类和导航规则来填充JSF中的控制器角色。您可以将JSF托管bean用于您的服务,也可以使用其他框架(如Spring)来实现此目的,但您将实现特定的类以用作JSF中的控制器

至于模型……好的,任何好的MVC框架都会将模型留给自己。模型不应该知道或关心它在哪个视图中。希望您可以使用JSF、Wicket和Vaadin等任何工具将模型显示在网页中,然后在桌面应用程序或基于RESTful JSON的api中使用它

这里有一些链接,我建议您通过这些链接了解JSF

  • (较老,但会把基本知识记下来)
  • (上文第2部分)
  • (上文第3部分)
  • (马蒂·霍尔教程)

    • 我认为你的理解是正确的

      我要说的是,JSF占据了控制器的大部分。不过还有其他与JSF兼容的库。例如,您可以将SpringWebFlow与JSF结合使用,以获得更强大的导航功能

      在模型方面,JSF不是很具有侵入性。理想情况下,域模型中没有任何使用JSF的痕迹(例外是JSF提供了可以选择使用的注释,如@ManagedBean)。这意味着您可以自由使用任何想要的库。如果愿意,您可以使用Spring IOC或EJB,也可以用普通的旧java对象编写整个模型

      话虽如此,我想强调的是,JSP并不是过时的。正如digitaljoel指出的,Facelets已经取代JSP成为JSF中的视图技术,但JSP在其他框架中仍然是活跃和健康的。没有人同意JSF(包括Facelets)比JSP(以及其他web框架)更好;而且JSF还没有成为行业标准

      使用JSF编写web应用程序更接近于编写桌面应用程序,因为它们已经抽象出了大部分请求-响应处理。没有一个特定的方法在每次客户端执行请求时被调用,而是每个请求都经过一个您无法完全控制的生命周期不鼓励HttpServletRequest

      忽略web的请求-响应特性会增加请求的复杂性,并与另一个不断增长的趋势相冲突:严重依赖Javascript的富web应用程序。视图逻辑的责任从服务器转移到浏览器,浏览器使用Ajax和精简HTTP API与服务器交互


      关键是,JSF并不是你需要学习和忽略其他一切的最终框架。它可能是一些应用程序的正确选择,但不是所有应用程序的正确选择。

      我认为你的理解是正确的

      我要说的是,JSF占据了控制器的大部分。不过,还有其他与JSF兼容的库。例如,您可以将SpringWebFlow与JSF结合使用来获得