2017-06-18 11 views
1

テキストフィールドを使用するユーザーの姓と名を取得する簡単なプログラムを作成しました。しかし、問題は、私が送信ボタンをクリックすると、ユーザーのファーストネームとラストネームを示す別のjspファイルにリダイレクトできないということです。Struts 2を使用してjspファイルをリダイレクトして値を表示できません。

は、ここに私のhelloActionとクラスです:

package com.novamsc.training.struts.action; 

import com.opensymphony.xwork2.ActionSupport; 

public class HelloAction extends ActionSupport { 

    private String firstName; 
    private String lastName; 

    public String user(){ 
     return "hello"; 
    } 

    public String getFirstName() { 
     return firstName; 
    } 

    public void setFirstName(String firstName) { 
     this.firstName = firstName; 
    } 

    public String getLastName() { 
     return lastName; 
    } 

    public void setLastName(String lastName) { 
     this.lastName = lastName; 
    } 

    public String display(){ 
     return "hi"; 
    } 
} 

はここに私のresultInput.jsは、ファイルの私のuserInput.jspファイルここ

<%@page contentType="text/html" pageEncoding="UTF-8"%> 
<%@ taglib uri="/struts-tags" prefix="s"%> 

<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
<title>User Form</title> 
</head> 

<body> 
    <s:form name="inputData"> 
    <s:textfield key="firstName"/> 
    <s:textfield key="lastName"/> 
    <s:submit/> 
    </s:form> 

</body> 

</html> 

<%@page contentType="text/html" pageEncoding="UTF-8"%> 
<%@ taglib uri="/struts-tags" prefix="s"%> 

<html> 

<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
<title>Get Result</title> 
</head> 

<body> 
    <p> 
    <s:property value="firstName" /> 
    </p> 
    <p> 
     <s:property value="lastName" /> 
    </p> 
</body> 

</html> 

ここに私のstruts-traning.xmlファイルには、あなたが別のアクションにフォームをマッピングする追加の属性をformタグを使用する必要があります

<?xml version="1.0" encoding="UTF-8" ?> 
<!DOCTYPE struts PUBLIC 
     "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" 
     "http://struts.apache.org/dtds/struts-2.0.dtd"> 

<struts> 

    <package name="hello" namespace="/exercise" extends="training-default"> 

     <action name="userInput" class="com.novamsc.training.struts.action.HelloAction" 
      method="user"> 
      <result name="hello">/jsp/userInput.jsp</result> 
     </action> 

     <action name="inputData" class="com.novamsc.training.struts.action.HelloAction" 
      method="display"> 
      <result name="hi">/jsp/resultInput.jsp</result> 
     </action> 
    </package> 

</struts> 
+0

フォームは、デフォルトで同じアクションに送信されます。フォームが送信された後に別のアクションにリダイレクトする必要がある場合は、リダイレクト結果タイプを使用するか、アクション結果タイプをより適切にリダイレクトする必要があります。 –

+0

あなたはどのように私を見せてくれますか? –

+0

これはあなたの質問ですが、私はあなたにどのように示されていますか? –

答えて

0

です。

<s:form name="inputData" namespace="/exercise" action="submitData"> 
    <s:textfield key="firstName"/> 
    <s:textfield key="lastName"/> 
    <s:submit/> 
</s:form> 

は、追加アクションのためにあなたは、アクションの設定

<action name="submitData" class="com.novamsc.training.struts.action.HelloAction" 
      method="save"> 
      <result type="redirectAction">inputData</result> 
</action> 

は、この追加のアクションはPRG (Post-Redirect-Get)に従うことが要求され

public String save(){ 
     return ActionSupport.SUCCESS; 
} 

新しいアクションをマッピングするために、追加のメソッドを追加記述する必要がありますパターン。

関連する問題