パスの 1 つ (UnderAge) にしかマップされないように見えるアクション マッピングがあります。アクション クラスにいくつかのロジックがあります。アクション クラスでばかげたプログラミング ミスを犯したのか、またはアクション マッピングが間違っています。アクションのマッピングは次のとおりです。
<action
path="/AgeCheck"
type="coreservlets.CheckAgeAppAction"
name="CheckAgeAppForm"
input="/welcome.jsp">
<forward name="OverAge" path="/OverAge.jsp" />
<forward name="UnderAge" path="/UnderAge.jsp" />
</action>
そして、私のアクションクラスはここにあります:
package coreservlets;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
public int age;
public class CheckAgeAppAction extends Action {
public ActionForward execute(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response) throws ServletException{
coreservlets.CheckAgeAppForm CheckAgeAppForm = (CheckAgeAppForm) form;
// String age = CheckAgeAppForm.getAge();
age = Integer.parseInt(CheckAgeAppForm.getAge());
System.out.println("int is : " + num);
if (age > 17){
return mapping.findForward("OverAge");
}
else{
return mapping.findForward("UnderAge");
}
}
ユーザーに名前と年齢を入力してもらいたいのですが、jsp ページでユーザーが入力した年齢 (>18 = OverAge、<18 = UnderAge) に応じて、OverAge または UnderAge パスを決定する必要があります。アクションフォームは、私がそこでエラーを起こした場合に備えてここにあります:
package coreservlets;
import org.apache.struts.action.*;
public class CheckAgeAppForm extends ActionForm {
private static final long serialVersionUID = 1L;
private String firstName= "Enter Name";
private String age = "Enter Age";
public String getFirstName(){
return firstName;
}
public String getAge(){
return age;
}
public void setFirstName(String name){
this.firstName= name;
}
public void setAge(String age){
this.age = age;
}
}