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