0

会議の登録と支払いのためのプラットフォームを作成する必要があります。支払いのために、私のアプリケーションはバックプラットフォームでユーザーをリダイレクトします。支払いの最後に、銀行のプラットフォームはアプリケーションでユーザーをリダイレクトし、データを送信します。これらのデータを取得するために (銀行のドキュメントに従って)、次のような JSP を使用しています。

<%@page import="EJB.getResponse"%>
<%
long paymentID = Long.parseLong(request.getParameter("paymentid"));
String result = request.getParameter("result");
String auth = request.getParameter("auth");
long ref = Long.parseLong(request.getParameter("ref"));
long tranid = Long.parseLong(request.getParameter("tranid"));
String trackid = request.getParameter("trackid");
out.println("redirect=" + "http://mymachine/congress/result.jsp?paymentID=" + paymentID + "&responsecode=" + responsecode);

%>

ページにリダイレクト命令がない場合、リモート サーバーはデータを送信しません。JSP は推奨されていないことを読んでいるので、JSF エンド Bean を使用して同じことを行う方法はありますか?


あなたの提案の後、私は次のように JSF と Beans を使用しようとしました:

<f:metadata>
    <f:viewParam name="result" value="#{getResponse.result}"/>
    <f:viewParam name="auth" value="#{getResponse.auth}"/>
    <f:viewParam name="ref" value="#{getResponse.ref}"/>
    <f:viewParam name="transid" value="#{getResponse.tranid}"/>
    <f:viewParam name="trackid" value="#{getResponse.trackid}"/>
    <f:event type="preRenderView" listener="#{getResponse.redirect}" />
</f:metadata>


public void redirect() throws IOException {
//    FacesContext facesContext = FacesContext.getCurrentInstance();
//            NavigationHandler navigationHandler = facesContext.getApplication().getNavigationHandler();
////           ExternalContext extContext = facesContext.getExternalContext();
////           extContext.redirect("result.jsp?paymentid=" + paymentId +  "&responsecode=" + responsecode + "faces-redirect=true");
//            navigationHandler.handleNavigation(facesContext, null,  "result.jsp?paymentid=" + paymentId + "&responsecode=" + responsecode + "faces-  redirect=true");
     ExternalContext ec = FacesContext.getCurrentInstance().getExternalContext();
    ec.redirect(ec.getRequestContextPath() + "/result.jsp?paymentid=" + paymentId + "&responsecode=" + responsecode + "faces-redirect=true");
}

私もサーブレットを試しました:

@WebServlet("/getresponse")
public class getResponse2 extends HttpServlet {

private Long paymentId;
private String result;
private String auth;
private String ref;
private String traind;
private String trackid;
private String udf1;
private String responsecode;
private String host;


@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    paymentId = Long.parseLong(request.getParameter("paymentid"));
    responsecode = "9999";
    System.out.println("paymentID: " + paymentId);
    // Etc... Put your original JSP code here and alter accordingly.
     request.getRequestDispatcher("notify2.jsp").forward(request, response); 
     //response.sendRedirect("result.jsp?paymentID=" + paymentId + "&responsecode=" + responsecode);  
}

しかし、銀行のプラットフォームについては誰も正しくありません。応答ページには、redirect= 文字列を含める必要があります。

4

1 に答える 1