action接收jsp页面的数据

一、action可以直接接收value值的:input控件type=text/hidden、select的选中项、textarea
二、action不可直接接收value值得:input控件type=radio、checkbox选中项

1、jsp页面的String、int类型数据可分别用String、Integer类型接收
2、jsp页面的date类型数据在action要以String接收,再转换为Date类型



***************************************************
以下代码是我自己看的,你们就略过吧
test.jsp

<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<base href="<%=basePath%>">
<title>test</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<script type="text/javascript" src="style/jquery-1.7.2.min.js"></script>
<link rel="stylesheet" type="text/css" href="style/common.css"/>
<script type="text/javascript">
var mark = true;

$(document).ready(function(){
$("input").change(function(){
mark = false;
});
$("select").change(function(){
mark = false;
});
$("textarea").change(function(){
mark = false;
});
$("#softId").change(getTypes);
/* 绑定beforeunload事件 */
$(window).bind('beforeunload',function(){
if(!mark){
return '您输入的内容尚未保存,确定离开此页面吗?';
}
});
});

function getTypes(){
var obj = eval("document.all.softId");
var softId = obj.options[obj.selectedIndex].value;
var div = document.getElementById("typee");
if(softId != 0){
$.ajax({
async : false,
cache: true,
type: 'POST',
dataType : "json",
url: "gettypes_bysoftid", //请求的action路径
data: "softId=" + softId,
success:function(data){ //请求成功后处理函数。 
setJSON = eval("("+data.result+")");   //把后台封装好的简单Json格式赋给对象
},
error:function(data){
alert("获取信息异常");
}
});

div.innerHTML = "";
for(var i=0;i<setJSON.length;i++){
var html = '<span><input type="checkbox" name="typee" onblur="checkttype()" checked="checked" value="'+setJSON[i].id+'">'
   +setJSON[i].name+' </span>';
div.innerHTML += html;
}
if(div.innerHTML != ""){
document.getElementById("ttypeError").style.display = 'none';
}
}else{
div.innerHTML = "";
}
}

// var flag = false;
//检查计划名称非空
function checksname(){
var snameValue = document.getElementById("sname").value;
if(snameValue.length == 0 || snameValue == null){
document.getElementById("snameError").style.display = 'block';
return false;
}else{
document.getElementById("snameError").style.display = 'none';
return true;
}
}

//给  升级计划类型值  隐藏域赋值
function setstype(){
//取得计划类型的下拉框选项
var scheduletypes = document.getElementsByName("sType");
var scheduletypeval = null;  
for(var i=0;i<scheduletypes.length;i++){  
if(scheduletypes.item(i).checked){        
scheduletypeval=scheduletypes.item(i).getAttribute("value");   
    break; 
   }
}
if(scheduletypeval=="force"){
document.getElementById("scheduleType").setAttribute("value",1);
}else if(scheduletypeval=="optional"){
document.getElementById("scheduleType").setAttribute("value",2);
}
}

//检查软件包非空
function checksoft(){
var softvalue = document.getElementById("softId").value;
if(softvalue == 0 || softvalue == null){
document.getElementById("softError").style.display = 'block';
return false;
}else{
document.getElementById("softError").style.display = 'none';
return true;
}
}

//检查待升级掌机类型非空 以及给掌机类型隐藏域赋值
function checkttype(){
var ttypeObj = document.getElementsByName("typee");
var typevalue = "";
for(var i=0;i<ttypeObj.length;i++){
if(ttypeObj[i].checked == true)
  {
typevalue += ttypeObj[i].value+",";
  }
}
document.getElementById("ttypevalstr").setAttribute("value",typevalue); //给隐藏域赋值

if(typevalue == "" || typevalue == null){
document.getElementById("ttypeError").style.display = 'block';
return false;
}else{
document.getElementById("ttypeError").style.display = 'none';
return true;
}
}

//升级单位设值    根据升级范围  控制级联是否显示及设值
function checkstrategy(){

var strategy = document.getElementsByName("strategy");
for(var i=0;i<strategy.length;i++){  
if(strategy.item(i).checked){        
    strategyval=strategy.item(i).getAttribute("value");   
    break; 
   }
}
if(strategyval=="all"){
    document.getElementById("cascadearea").style.display = 'none';
}else if(strategyval=="part"){
    document.getElementById("cascadearea").style.display = 'block';
}
}

//检查生效日期非空
function checkbegindate(){
var begindatevalue = document.getElementById("scheduleBeginDate").value;
if(begindatevalue == null || begindatevalue == ""){
document.getElementById("dateError").style.display = 'block';
return false;
}else{
document.getElementById("dateError").style.display = 'none';
return true;
}
}

function checkform(){

checksname();

checksoft();

checkttype();

checkstrategy();

checkbegindate();

setstype();

if(checksname() && checksoft() && checkttype() && checkbegindate()){
mark = true;
onsubmitForm();
}
else{
alert("请按要求填写表单!");
}
}

//提交表单
function onsubmitForm(){
document.form1.submit();
}
</script>
</head>
<body class="contentBody">
  <form action="equipment/addUpdateSchedule" method="post" name="form1">
计划名称:
     <input type="text" id="sname" name="scheduleTitle" onblur="checksname()"/>
<span id="snameError" style="display:none;color:red;"><span>计划名称不能为空</span></span>
     ...
计划类型:
     <input type="radio" value="force" id="scheduleType1" name="sType" checked="checked" disabled="disabled">
<font color="gray">强制升级</font>
<input type="radio" value="optional" id="scheduleType2" name="sType" disabled="disabled">
<font color="gray">可选升级</font>
<input type="hidden" id="scheduleType" name="scheduleType">
     ...
升级软件包:
     <select id="softId" id="scheduleSoft" name="scheduleSoft" onchange="checksoft()">
  <option value="0">请选择</option>
  <s:iterator value="softwares" var="software">
  <option value="${software.id }">${software.versionName }</option>
  </s:iterator>
</select>
<span id="softError" style="display:none;color:red;"><span>请选择一个软件升级包</span></span>
     ...
被升级的掌机类型:
     <div id="typee"></div>
<input type="hidden" id="ttypevalstr" name="scheduleUpdateTerminalType">
<span id="ttypeError" style="display:none;color:red;"><span>请至少选择一种软件类型</span></span>
     ...
升级范围:
     <input type="radio" value="all" name="strategy" checked="checked" disabled="disabled">
<font color="gray">全部单位</font>
<input type="radio" value="part" name="strategy" disabled="disabled">
<font color="gray">指定单位</font>
<input type="hidden" id="scheduleUnit" name="scheduleUnit" value="0">
     ...
是否级联:
<input type="radio" value="1" id="cascade1" name="sCascade" checked="checked">级联
<input type="radio" value="2" id="cascade2" name="sCascade">不级联
<input type="hidden" id="scheduleCascade" name="scheduleCascade" value="0">
...
     生效日期:
     <input id="nowtime" type="hidden" readonly="readonly" class="Wdate"
onfocus="var scheduleBeginDate=$dp.$('scheduleBeginDate');WdatePicker({dateFmt:'yyyy-MM-dd HH:mm:ss',onpicked:function(){scheduleBeginDate.focus();},maxDate:'#F{$dp.$D(\'scheduleBeginDate\')}'})">
<input id="scheduleBeginDate" name="scheduleBeginDate"  readonly="readonly" class="Wdate"
onfocus="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm:ss',minDate:'#F{$dp.$D(\'nowtime\')}'})"
onblur="checkbegindate()">
<span id="dateError" style="display:none;color:red;"><span>请选择生效日期</span></span>
...
     备注:
     <input type="hidden" name="scheduleStatus" value="1">   <!-- 计划状态影藏域 -->
<textarea onpropertychange="if(value.length>100) value=value.substr(0,100)" rows="5" cols="80" name="scheduleMemo"></textarea>
...
<input type="button" style="height: 24px; width: 62px;" onclick="checkform()" value="保存">
<input type="button" onclick="returnOper('equipment/getAllSchedule')" style="height: 24px; width: 62px;" value="返回">
</form>
</body>
</html>


struts.xml
...
    <package name="equipment" namespace="/equipment" extends="default">
     <action name="getAllSchedule" class="com.keyman.fss.action.EquipmentAction" method="getAllSchedule">
      <result name="success">/equipment/updateSchedule.jsp</result>
     </action>    
   
     <action name="addUpdateSchedule" class="com.keyman.fss.action.EquipmentAction" method="addUpdateSchedule">
      <result name="success" type="chain">
        <param name="actionName">getAllSchedule</param>
     </result>
     </action>
    </package>
...

.action
private String scheduleTitle;     
private Integer scheduleType;     
private Integer scheduleSoft;     
private Integer scheduleUnit;     
private Integer scheduleCascade;    
private String scheduleBeginDate;    
private Integer scheduleStatus;     
private String scheduleMemo;     
private String scheduleUpdateTerminalType; 
public String addUpdateSchedule(){

Integer sunit = null;
  if(scheduleUnit != 0){
   sunit = scheduleUnit;
  }
  Integer scascade = null;
  if(scheduleCascade != 0){
   scascade = scheduleCascade;
  }
  //生效日期
  SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  Date beginDate = null;
  try {
   beginDate = sdf.parse(scheduleBeginDate);
  } catch (ParseException e) {
   e.printStackTrace();
  }
 
  //选中升级的掌机类型集
  String[] selectedtypes = scheduleUpdateTerminalType.substring(0, scheduleUpdateTerminalType.length()-1) //去除字符串末尾逗号
         .split(",");   //根据逗号分开成数组
  Integer[] types = new Integer[selectedtypes.length];
  for(int i = 0;i<selectedtypes.length;i++){
   int index = i;
   types[index] = Integer.parseInt(selectedtypes[i]);
  }
  try {
   ...
   UpdateSchedule schedule = ConnectEjb.fssRemote.addUpdateScheduleAndItem(ConnectEjb.actor,
     scheduleTitle, scheduleType, scheduleSoft, sunit, scascade, beginDate,
     scheduleStatus, types, scheduleMemo);
   System.out.println(schedule.getScheduleTitle());
  } catch (NoMethodAuthorityException e) {
   errorString = e.getMessage();
  } catch (NoObjectAuthorityException e) {
   errorString = e.getMessage();
  } catch (NoAvailableActorException e) {
   errorString = e.getMessage();
  } catch (Exception e) {
   errorString = "未知错误";
  }
  return SUCCESS;
}

posted @ 2012-12-01 11:30  zhenglongJava  阅读(629)  评论(0编辑  收藏  举报