0

有没有办法从 JavaScript 调用托管 bean 方法?

我在数据表中有一个链接,该链接应该转到相应投标的文档存储库。请检查屏幕截图。但是面板内的数据表位于布局内,因此链接不会将页面转移到所需的路径。所以我试图从链接中调用 JavaScript,然后从托管 bean 中调用一个方法,该方法将返回到所需的页面。我试图隐藏一个按钮并使其在单击链接时提交。但它不起作用。

在此处输入图像描述

4

3 回答 3

0

要导航到要求页面,您需要在 f:param 中传递所需的信息(例如,在您的情况下传递唯一的 id 或编号,或者可能是投标编号)并在其上调用 ManagedBean 方法。

于 2013-02-08T09:31:41.030 回答
0

好的,我终于明白了。

在命令链接中,如果我使用动作它不会转移。但我将其更改为 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");


}
于 2013-02-08T10:27:47.480 回答
0

<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>

于 2013-02-08T17:53:39.960 回答