ModelDriven这个叫模型驱动
总的来说需要建javabean类,写Action的时候需要继承接口ModelDriven,可以不用在Action类中编写对应的get/set方法,但是需要实例化Cal类.
.jsp
<body>
<form action="calAction" method="post" >
操作数1:<input type="text" name="num1" value="${requestScope.num1}"><br>
运算: <input type="radio" name="op" value="+" ${requestScope.op=="+"? "checked": " "}>+
<input type="radio" name="op" value="-" ${requestScope.op=="-"? "checked" : " "}>-
<input type="radio" name="op" value="*" ${requestScope.op=="*"? "checked" : " "}>*
<input type="radio" name="op" value="/" ${requestScope.op=="/"? "checked" : " "}>/<br>
操作数2:<input type="text" name="num2" value="${requestScope.num2}"><br>
<input type="submit" value="计算" ><br>
结果:<input type="text" value="${requestScope.result}">
</form>
</body>Action页面
package action;
import cal.Cal;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
public class calAction extends ActionSupport implements ModelDriven<Cal> {
private Cal cal=new Cal();
public String caloption(){
float result=0;
System.out.println(cal.getOp());
float num1=cal.getNum1();
float num2=cal.getNum2();
switch(cal.getOp().charAt(0)){
case '+':
result=num1+num2;
break;
case '-':
result=num1-num2;
break;
case '*':
result=num1*num2;
break;
case '/':
result=num1/num2;
}
System.out.print(result);
ActionContext action=ActionContext.getContext();
action.put("result",result);
return "success";
}
@Override
public Cal getModel() {
// TODO Auto-generated method stub
return cal;
}
}javabean
package cal;
public class Cal {
private float num1;
private String op;
private float num2;
public float getNum1() {
return num1;
}
public void setNum1(float num1) {
this.num1 = num1;
}
public String getOp() {
return op;
}
public void setOp(String op) {
this.op = op;
}
public float getNum2() {
return num2;
}
public void setNum2(float num2) {
this.num2 = num2;
}
}struts.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<constant name="struts.enable.DynamicMethodInvocation" value="false" />
<constant name="struts.devMode" value="true" />
<package name="default" namespace="/" extends="struts-default">
<action name="calAction" class="action.calAction" method="caloption">
<result name="success">/cal.jsp</result>
</action>
</package>
<!-- Add packages here -->
</struts>
Struts2 ModelDriven 示例
本文介绍了一个使用Struts2框架中的ModelDriven特性实现简单计算器的例子。通过继承ModelDriven接口并实现getModel方法,可以简化Action类的设计。示例中包含了必要的Action类、JavaBean类、配置文件及HTML表单。
4692

被折叠的 条评论
为什么被折叠?



