Я следил за онлайн-учебником о том, как использовать метод Wildcard в Struts2, но он не работает, как показано. При выполнении команды он вызывает только метод execute()
и никогда не вызывает никаких других методов. Я не уверен, в чем проблема, но любая помощь будет потрясающей.Подстановочный знак на Struts2
Ниже приведен файл моего действия и файл расположений, связывающий действие с JSP-вызовами на странице JSP.
CalculatorAction.java
package com.simplecode.action;
import com.opensymphony.xwork2.ActionSupport;
public class CalculatorAction extends ActionSupport
{
private float number1;
private float number2;
private float result;
private String methodName;
public String add()
{
System.out.print("afsnjfbkjsdfhdskfhsdkjfhksdjfhkdsjfhksdjfhsdkjfhksjfhkjdsfhdsk");
result=number1+number2;
setMethodName("add Method");
return SUCCESS;
}
public String subtract()
{
result = number1 - number2;
setMethodName("subtract Method");
return SUCCESS;
}
public String multiply()
{
result = number1 * number2;
setMethodName("multiply Method");
return SUCCESS;
}
public String divide()
{
if(number2!=0)
result = number1/number2;
else if(number1!=0)
result = number2/number1;
else
result=0;
setMethodName("divide Method");
return SUCCESS;
}
public float getNumber1() {
return number1;
}
public void setNumber1(float number1) {
this.number1 = number1;
}
public float getNumber2() {
return number2;
}
public void setNumber2(float number2) {
this.number2 = number2;
}
public float getResult() {
return result;
}
public void setResult(float result) {
this.result = result;
}
public String getMethodName() {
return methodName;
}
public void setMethodName(String methodName) {
this.methodName = methodName;
}
}
struts.xml
<?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>
<constant name="struts.enable.SlashesInActionNames" value="true"/>
<constant name="struts.mapper.alwaysSelectFullNamespace" value="false"/>
<constant name="struts.enable.DynamicMethodInvocation" value="false"/>
<constant name="struts.devMode" value="true"></constant>
<package name="default" extends="struts-default">
<action name="*Calculator" method ="{1}"
class="com.simplecode.action.CalculatorAction">
<result name="success">curd.jsp</result>
</action>
</package>
</struts>
curd.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@taglib uri="/struts-tags" prefix="s"%>
<html>
<head>
<title>Dispatch Action</title>
</head>
<body>
<s:form action="Calculator">
<table>
<tr><td><s:textfield name="number1" label="Number 1 " id="number1"/></td></tr>
<tr><td><s:textfield name="number2" label="Number 2 " id="number2"/></td></tr>
<tr><td><s:textfield name="result" label="Result " readonly="true"/></td></tr>
<tr><td><s:textfield name="methodName" label="Method involked " readonly="true" /></td></tr>
<tr>
<td><s:submit value="addCalculator" align="left" /></td>
<td><s:submit action="subtractCalculator" value="Subtract" align="left"/></td>
<td><s:submit action="divideCalculator" value="Divide" align="left"/></td>
<td><s:submit action="multiplyCalculator" value="Multiply" align="left"/></td>
<td><s:submit align="left"/></td>
</tr>
</table>
</s:form>
</body>
</html>
Повторяющиеся вопросы не являются причиной для downvote согласно http://meta.stackoverflow.com/q/254712/438992 и http://meta.stackoverflow.com/q/252677/438992. –