簡體   English   中英

如何從xhtml中的commandButton重定向到Servlet

[英]how to redirect to a Servlet from a commandButton in xhtml

我已經有幾天麻煩了。 希望這更干凈,之前完成此任務的人可以幫助我!

我正在使用運行在tomcat 7.0服務器上的Eclipse中的JSF 2.0構建webApp。 並且已經創建了一個我想去的servlet,但我不知道如何解決導航規則帶我去那里:

在我的項目中,路徑是src / com / servlets / PdfServlet,所以當我在服務器上運行項目時,可以通過url localhost:8080 / miloWeb / PdfServlet訪問這個servlet。 servlet實際為我創建一個Pdf文件並顯示它。

無論如何我的xhtml有這個:

<h:commandButton id="reportButton"  action="reportPdf" styleClass="button" value="get Report" ></h:commandButton>

我的faces-config導航規則如下所示:

<navigation-rule>
    <navigation-case>
        <from-outcome>reportPdf</from-outcome>      
        <to-view-id>/miloWeb/PdfServlet</to-view-id>
        <redirect />
    </navigation-case>
</navigation-rule>

但它需要我到miloWeb / faces / miloWeb / PdfServlet,我需要它帶我去miloWeb / PdfServlet。

關於如何完成這個或其他路線或這樣做的任何想法?

首先,導航規則僅適用於JSF。 他們無法幫助您導航到servlet。

faces-config中的導航規則在JSF2.0中是多余的。 它們由JSF隱式處理,基於action方法返回的值(結果)。 "?faces-redirect=true"可以附加到重定向結果的末尾。

我不知道你的功能要求是什么。 您正在嘗試混合使用JSF和servelts,這不是一個好主意。

<h:commandButton id="reportButton"  action="reportPdf"

action屬性的值必須是解析為某個JSF托管bean中的方法的方法表達式。 例如action="#{controllerBean.axnMethod()}"

調用axnMethod() ,一個選項是從那里重定向到servlet。 具體如下:

FacesContext.getCurrentInstance().getExternalContext().redirect("url");

或者,要求只是在視圖上調用servlet,只需將一個鏈接與調用servlet的url放在一起。

JSF在Faces servlet中執行,使用標准導航,您只能導航到jsf視圖。 要改為使用servlet。 另一個選擇是避免使用servlet,並通過如下所述的操作方法提供pdf文件: http//www.winstonprakash.com/articles/jsf/file_download_link.htm

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM