JavaScript和JSF是如何协同工作的

How do JavaScript and JSF work together?

本文关键字:协同工作 JSF JavaScript      更新时间:2023-09-26

这里的新开发人员-我很好地掌握了基本的Java,但我对Javascript/jQuery和JSF 2.0不太熟悉(尽管有些熟悉)。

我看了一下这个问题/答案:Java中用于编程Web应用程序的不同技术是如何协同工作的?但我希望更多地综合研究这些技术是如何相互作用的。

我目前正在对一个现有的应用程序进行UI重写。我的大部分工作都是在.xhtml文件中使用JSF/Primefaces,尽管也有一些工作是使用backingbeans和Javascript函数。特别是,如果有人能举一两个例子来展示如何以及为什么从JSF访问Javascript(以及为什么在Java上使用它),那就太好了。

JSF页面(.xhtml)主要使用JSF标签,这些标签可以通过JAVA代码(托管bean)的各种属性绑定,最终所有这些JSF标签都被转换为简单的HTML标签(只需查看源代码并检查最终结果即可。

现在,对于js/jQuery,在页面加载后(页面加载/jQuery就绪),您可以使用js代码来操作html页面(UI),这些代码可以在页面加载/就绪等时执行…或者作为点击页面中某个元素的结果。

除此之外,您可以通过执行$('#someId').click();之类的操作来使用js/jQuery触发JSF,其中someId是一些JSF元素的id

<h:commandButton id="someId"
            action="#{myBean.myAction}">
            <f:ajax execute="@form" render="@form"></f:ajax>
        </h:commandButton>

记住,所有JSF元素/PrimeFaces元素最终都被翻译成简单的HTML元素(在PrimeFaces中,相关的js代码被包含在页面中,以便它们的UI元素工作)

就是这样…


JSF确实有用于调用js代码的钩子,它主要是与调用ajax一起完成的,例如,您可以在ajax开始前显示一个加载div,并在ajax结束后隐藏它(谷歌关于JSF-ajax begin complete success

从js调用JSF操作-例如,如果你有一个jquery插件,它包含一些数据,并且你想提交给你的托管bean-在这种情况下,你可以将所有插件数据(一些JSON)放入隐藏的文本输入中,然后向你的服务器发出执行该JSON的JSF-ajax调用),

Java用于后端。例如,在一个典型的web应用程序中,您有一个简单的html或jsp登录页面。你怎么知道用户名和密码是正确的,所以你写java代码并放入一些逻辑来实现这一点。可以使用JavaScript的原因有很多——它是一种同步语言,意味着可以在不刷新url的情况下操作数据。或者它可以用来验证诸如不允许使用的特殊字符之类的东西。