有没有办法从 JavaScript 调用托管 bean 方法?
我在数据表中有一个链接,该链接应该转到相应投标的文档存储库。请检查屏幕截图。但是面板内的数据表位于布局内,因此链接不会将页面转移到所需的路径。所以我试图从链接中调用 JavaScript,然后从托管 bean 中调用一个方法,该方法将返回到所需的页面。我试图隐藏一个按钮并使其在单击链接时提交。但它不起作用。
有没有办法从 JavaScript 调用托管 bean 方法?
我在数据表中有一个链接,该链接应该转到相应投标的文档存储库。请检查屏幕截图。但是面板内的数据表位于布局内,因此链接不会将页面转移到所需的路径。所以我试图从链接中调用 JavaScript,然后从托管 bean 中调用一个方法,该方法将返回到所需的页面。我试图隐藏一个按钮并使其在单击链接时提交。但它不起作用。
要导航到要求页面,您需要在 f:param 中传递所需的信息(例如,在您的情况下传递唯一的 id 或编号,或者可能是投标编号)并在其上调用 ManagedBean 方法。
好的,我终于明白了。
在命令链接中,如果我使用动作它不会转移。但我将其更改为 actionListener 并且它有效。
<p:commandLink id="submitButton" actionListener="#{docManagedBean.viewDocs(action)}"
value="View Docs">
</p:commandLink>
和我的托管 Bean 方法
public void viewDocs(ActionEvent action) throws IOException{
FacesContext ctx = FacesContext.getCurrentInstance();
FacesContext.getCurrentInstance().getExternalContext().redirect("/Proj-war/faces" + "/DocumentRepositary/documentsView" + ".xhtml");
}
<h:link>
如果您只想在点击时执行导航,为什么不使用 simple呢?并且您可以设置<f:param>
通知链接中的投标 ID 或其他唯一值。由于您的招标搜索结果位于 内<ui:repeat>
,我想,只需添加简单的链接即可导航到招标文档。我的观点是,从动作侦听器方法进行重定向实际上是设计中的一个大问题。如果您想在页面上或在查看目标页面之前执行某些操作,则可以使用命令按钮。
简单示例: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>
看看这个关于使用的答案<f:viewParam>
。