JSF从JavaScript调用托管bean方法
有没有办法从JavaScript调用托管bean方法 我在一个数据表中有一个链接,该链接应转到相应投标的文档存储库。请检查屏幕截图。但是datatable位于面板内,它位于布局内,因此链接不会将页面转移到所需路径。因此,我试图从链接中调用一个JavaScript,该链接又从托管bean中调用一个方法,该方法将返回到所需页面。我试图隐藏一个按钮,并使其提交的链接点击。但它不起作用JSF从JavaScript调用托管bean方法,javascript,jsf-2,Javascript,Jsf 2,有没有办法从JavaScript调用托管bean方法 我在一个数据表中有一个链接,该链接应转到相应投标的文档存储库。请检查屏幕截图。但是datatable位于面板内,它位于布局内,因此链接不会将页面转移到所需路径。因此,我试图从链接中调用一个JavaScript,该链接又从托管bean中调用一个方法,该方法将返回到所需页面。我试图隐藏一个按钮,并使其提交的链接点击。但它不起作用 要导航到require页面,您需要在f:param中传递所需的信息(例如,在您的情况下,传递唯一的id或编号,或者可能
要导航到require页面,您需要在f:param中传递所需的信息(例如,在您的情况下,传递唯一的id或编号,或者可能是投标编号之类的),并在其上调用ManagedBean方法。确定最后我得到了它 在命令链接中,如果我使用操作,它不会转移。但我把它改成了actionListener,它很管用
<p:commandLink id="submitButton" actionListener="#{docManagedBean.viewDocs(action)}"
value="View Docs">
</p:commandLink>
如果您只想在单击时执行导航,为什么不使用simple
?您可以设置
,以通知投标id或链接中的其他唯一值。由于您的投标搜索结果位于
中,我想,只需添加简单的链接即可导航到投标文件。我的观点是,从动作侦听器方法进行重定向实际上是设计中的一个大问题。如果要在页面上或在查看目标页面之前执行某些操作,可以使用命令按钮
简单示例:search.xhtml的一部分:
<ui:repeat var="tender" value="#{tenderBean.tenders}">
<!-- UI part of table -->
<h:link value="View tender docs"utcome="path/to/tender/docs/viewDocs.xhtml">
<f:param name="tenderId" value="#{tender.id}" />
</h:link>
</ui:repeat>
简单示例(续):viewDocs.xhtml的一部分:
<f:metadata>
<f:viewParam name="tenderId" value="#{tenderDocsBean.tenderId}" required="true" />
<f:event type="preRenderView" listener="#{tenderDocsBean.loadTenderDocs}" />
</f:metadata>
查看
的用法您能提供您正在使用的框架的规范吗?重复:使用primefaces、jsf 2.0,这可能是一个重复的问题。但他们给出的答案似乎对我不起作用。我们不能简单地在JavaScription中调用托管bean方法吗?您尝试过使用吗?因为我使用的是primefaces,我不确定这是否是原因。如果我使用h:link,它将显示为标签而不是链接。至于view docs.xhtml,我不想在jsf中获得值。但是我想要java托管Bean中的值,请同时查看这段代码,它将被转移到正确的页面。现在,我想在托管bean中获取id,并显示与我在MBean中查询的id相关的文档。我不会在你们的情况下使用这个按钮,因为你们想做的就是执行导航,正如我在回答中所说的。我认为get请求在这种情况下是合适的,因为用户将能够获得他在url中查看的投标书。如果要在单击按钮时加载页面,则可以使用以下代码:
。这将预设所需bean的值,并使其在查看文档页面加载期间可用。别忘了在commandButton的属性中添加ajax=“false”。它被转移到正确的页面。现在我想在我的托管bean中获取id,并显示与该id相关的文档。那么我应该怎么做呢?在util类上创建公共类Utils{private static Utils dnbUtils;private Utils(){}public static Utils getInstance(){if(dnbUtils==null){dnbUtils=new Utils();}返回dnbUtils;}公共字符串getRequestParam(字符串参数名){FacesContext context=FacesContext.getCurrentInstance();return(String)context.getExternalContext().getRequestParameterMap().get(parameterName);}}}托管Bean代码字符串值=Utils.getInstance().getRequestParam(“参数的名称”);logger.info(“+”值);好的,我用了u-r代码和它的工作原理。我没有使用FacesContext context=FacesContext.getCurrentInstance();context.getExternalContext().getRequestParameterMap().get(“tenderId”);这给了我所需的投标Id。但我仍然不明白这个Utils类是什么。但是谢谢。我根本没有使用Utils类。基本上,Utils类只是一个实用程序类,我们可以在其中指定JSF相关的功能。我们没有在ManagedBean中实现重复的代码,而是在Utils类中指定功能性&只需创建类的实例,然后访问ManagedBean中的方法。
<f:metadata>
<f:viewParam name="tenderId" value="#{tenderDocsBean.tenderId}" required="true" />
<f:event type="preRenderView" listener="#{tenderDocsBean.loadTenderDocs}" />
</f:metadata>