JSF、Javascript和HTML—如何创建高度动态的界面

JSF、Javascript和HTML—如何创建高度动态的界面,java,javascript,jsf,jsf-2,Java,Javascript,Jsf,Jsf 2,我对JSF和使用Java开发web应用程序还不熟悉。 我基本上开发了一个相当复杂的界面,加载了大量AJAX内容(分页、帖子、评论等等) 我将从一个基本的例子开始,一个用户写评论。表单通过JSF f:ajax发送到服务器,然后我可以执行render=“sectionId”,但问题是,我想让帖子不仅出现,而且向下滑动,甚至切换背景颜色 如何使用JSF和Javascript获得这种效果? 设计师(只知道HTML/CSS/Javscript/Jquery)说,通常,他只需对一个包含字符串数据的页面执行J

我对JSF和使用Java开发web应用程序还不熟悉。 我基本上开发了一个相当复杂的界面,加载了大量AJAX内容(分页、帖子、评论等等)

我将从一个基本的例子开始,一个用户写评论。表单通过JSF f:ajax发送到服务器,然后我可以执行render=“sectionId”,但问题是,我想让帖子不仅出现,而且向下滑动,甚至切换背景颜色

如何使用JSF和Javascript获得这种效果? 设计师(只知道HTML/CSS/Javscript/Jquery)说,通常,他只需对一个包含字符串数据的页面执行Jquery AJAX调用,然后页面生成一个JSON编码,然后他就可以使用它来完成所有的工作

我不是问你如何在jquery中切换/颜色,而是JSF和Javascript之间的通信。那么,我如何才能将新生成的HTML代码发送到他的javascript中,这样他就可以随心所欲地使用它了


感谢您的帮助。

JSF是一种服务器端技术,您通常会有条件地在其中显示内容 一个构造,比如panelGroup,那么为什么不在ready中包含jquery魔力呢 条件呈现的panelGroup中的处理程序,如下所示:

<h:panelGroup id="ajaxRenderTarget">
  <ui:repeat value="#{bean.listOfComments}" var="var">
  ... display required information ...
  </ui:repeat>
  <h:panelGroup rendered="#{bean.showJqueryEffects}">
    <script type="text/javascript">
        jQuery(function($) {
            ... funky effects here ...
        });
    </script>
  </h:panelGroup>
</h:panelGroup>

... 显示所需信息。。。
jQuery(函数($){
…这里的怪效果。。。
});
在上面的示例中,我使用了ui:repeat,您可以并且可能会使用jsf中的任何数据迭代组件或组件库(如datatable)

另一件要考虑的事情是<代码> <代码>和其他值得知道的其他标签。


要避免的一个错误是,试图使用jQuery ajax函数加载JSF页面,服务器将没有组件树的状态,并且无法工作。

记住,JSF组件生成纯HTML。您的
s将成为
谢谢。javascript如何捕获新生成的HTML?一旦设计师能够抓住它,他将能够把它放在他想要的地方,他想要的方式。。。是满足您需求的良好起点。再次感谢。但是我们在理解JSF标记时没有问题。问题是,当JSF执行AJAX事件并生成新的HTML(如我的示例中的post显示)时,我们希望将HTML提供给我们的自定义javascript,以便他可以执行时髦的效果。
中的
onevent
标记属性接收javascript方法。你可以用这个方法处理ajax状态。太棒了,谢谢。使用这个简单的例子,这意味着我将是默认的do display:none作为注释,然后当它读取脚本时,执行slideDown和toggleColor。。。对吗?不完全正确-当EL表达式的计算结果为rendered=“#{false}”时,HTML根本不会发送到客户端。只有当布尔表达式设置为true并且页面重新加载或通过ajax重新呈现封闭组件时,才会将此内容发送到客户端浏览器。