为什么我的菜单在素数面需要一个表格周围是?这是最好的方法吗?
所需表格:
<h:form id="menuForm">
<p:menu>
<p:menuitem value="Simple Flow" action="simple-flow" ajax="false"/>
</p:menu>
</h:form>
不需要表格:
<p:menu>
<p:menuitem value="Simple Flow" outcome="/simple-flow/simple-flow"/>
</p:menu>
发布于 2015-02-05 14:04:09
带有结果的菜单项生成带有href的普通html a
标记(在应用程序的域中)。单击时,会产生对指定页的get请求。url属性做同样的操作,但是可以用来引用外部页面,通过调查PrimeFaces菜单展示的源可以看到--这个功能不需要表单,因为不需要将数据发送到服务器。
action属性也生成一个a
标记,但是它总是需要向服务器发送数据,并且能够在服务器上调用一个方法。(这就是如何在JSF中定义动作的一般功能)。本例中的菜单项没有功能hfref (它是"#"),但是通过javascript (请参阅展示的源代码)单击它,或者执行ajax调用(如果指定的话)或完全提交表单。因为在这两种情况下,表单数据都需要发送到服务器,所以需要表单(这就是html的工作方式)。
是的,您可以通过指定process="@this“来排除发送其他数据,或者您可能没有数据,但是服务器仍然需要知道发生了什么,并且行为必须与规范一致。您的示例不调用服务器上的方法(不存在#{.}),这是一个优化,您现在可以指定JSF 2中引入的直接页面。在jsf 1.2中,需要导航规则。(见http://www.mkyong.com/jsf2/implicit-navigation-in-jsf-2-0/)
因此,您在ui中看到的行为可能没有什么不同,但在幕后却是如此。
https://stackoverflow.com/questions/28344902
复制相似问题