将jsp中选择的值传递给struts中的Action



我最近尝试学习Java和struts。我想从下拉菜单中传递选中的值但我在操作中接收到的只是null

这是我的代码

下拉列表

<s:select list="UrgencyList"  listKey="name" listValue="name" 
key="urgency" name="urgency" emptyOption="false" headerKey="12"  required="true"
headerValue="--------------------------------------------------------" />  
<font class="ui-widget-R"><s:property value="errors['urgency'][0]" /></font>

my xml,SavSharing是我的按钮使用的post动作

<action name="SavSharing" class="com.ao.qshare.form.Sharing" method="Save">
<exception-mapping exception="org.apache.commons.fileupload.FileSizeLimitExceededException" 
result="error" />

<result name="success">/qs/sharing.jsp</result> 
<result name="input">/qs/sharing.jsp</result> 
<interceptor-ref name="basicStack"/>
<interceptor-ref name="mydefault" /> 
</action>

public class Sharing extends ActionSupport {
public String Save() throws Exception {
String result = "";
SharingSqlManger sql = null;
SiteDeploySqlManger sSql=null;
try {
Log.info(getClass(), "-----Save start-----");

con = DbConnection.getDbConnection();// get account
con.setAutoCommit(false);


sql=new SharingSqlManger(con);
sSql= new SiteDeploySqlManger(con);

ActionContext actionContext = ActionContext.getContext();
Map<?,?> data=actionContext.getParameters();

String tp=SharingUtil.getString(data.get("tp"));


attachs=SharingUtil.getFile(this.sno,SharingConstants.sharing);
boolean isSameFile=SharingUtil.isSameFile(SharingUtil.getFileString(attachs),this.getUploadFileName());


//          boolean isSameFile=SharingUtil.isSameFile(this.attach,this.getUploadFileName());



//save
this.setPara();     

String oldStatus=entity.getStatus();    

if (isSameFile){
this.addActionMessage(SharingConstants.messFileExists);
mess.add(SharingConstants.messFileExists);

this.setEntityDesc(sql,sSql);   
this.setEntity(entity);

init(sql);
isValidate=false;
result = INPUT;

}else{ 

//upload!=null,do upload            
if (!GenericValidator.isBlankOrNull(this.getUploadFileName())) {
this.setAttach(this.attach+this.getUploadFileName()+";");
entity.setAttach(this.attach);
}       

if (tp.equals("File")){

if (this.lengthValidate() && this.isSaveValidate(sql)){

if (status.equals(SharingConstants.deployStatusKey)) {
SharingEntity shEntity = sql.getSharing(sno, "</p>");
entity.setAlertSite(shEntity.getAlertSite());
entity.setAlertDept(shEntity.getAlertDept());
entity.setDeployDept(shEntity.getDeployDept());
entity.setDeploySite(shEntity.getDeploySite());
entity.setDSite(shEntity.getDSite());
entity.setDDept(shEntity.getDDept());

//Start CR-2014-01727 Kevin
entity.setAlertCopy(shEntity.getAlertCopy());
entity.setDeployCopy(shEntity.getDeployCopy());
//End CR-2014-01727 Kevin
} 


//save
sno = sql.save(entity,SharingConstants.saveDocument,SharingConstants.sharing,oldStatus);
this.setSno(sno);
entity=sql.getSharing(sno,"</p>");

this.setEntityDesc(sql,sSql);                       
this.setEntity(entity);


if (upload != null)
SharingUtil.getFile(upload, this.getUploadFileName(), sno,
SharingConstants.sharing);

init(sql);

con.commit();


Log.info(getClass(), "-----Save end-----");

isValidate=true;
result = SUCCESS;
}else{
this.setEntityDesc(sql,sSql);
this.setEntity(entity);

init(sql);
isValidate=false;
result = INPUT;
}
}else{

if (this.status.equals(SharingConstants.newStatusKey)){
this.setStatus(SharingConstants.drafStatusKey);

if (this.lengthValidate() && this.isSaveValidate(sql)){
entity.setStatus(SharingConstants.drafStatusKey);
//save
sno = sql.save(entity,SharingConstants.saveDocument,SharingConstants.sharing,oldStatus);
Log.info(getClass(), sno + " status:"+this.getStatusName());
Log.info(getClass(), sno + " save finished");
this.setSno(sno);
entity=sql.getSharing(sno,"</p>");

this.setEntityDesc(sql,sSql);
this.setEntity(entity);   

init(sql);

con.commit();


if (upload != null)
SharingUtil.getFile(upload, this.getUploadFileName(), sno,
SharingConstants.sharing);


Log.info(getClass(), "-----Save end-----");

isValidate=true;
result = SUCCESS;
}else{

this.setEntityDesc(sql,sSql);
this.setEntity(entity);
init(sql);
isValidate=false;
result = INPUT;
}


}else{
if (status.equals(SharingConstants.deployStatusKey)){//deploy
if (this.lengthValidate() && isValidate(SharingConstants.Deployed,sql)) {

SharingEntity shEntity=sql.getSharing(sno,"</p>");
entity.setAlertSite(shEntity.getAlertSite());
entity.setAlertDept(shEntity.getAlertDept());
entity.setDeployDept(shEntity.getDeployDept());
entity.setDeploySite(shEntity.getDeploySite());
entity.setDSite(shEntity.getDSite());
entity.setDDept(shEntity.getDDept());

//Start CR-2014-01727 Kevin
entity.setAlertCopy(shEntity.getAlertCopy());
entity.setDeployCopy(shEntity.getDeployCopy());
//End CR-2014-01727 Kevin

sno=sql.save(entity,SharingConstants.saveDocument,SharingConstants.sharing,oldStatus);
this.setSno(sno);
entity=sql.getSharing(sno,"</p>");

this.setEntityDesc(sql,sSql);
this.setEntity(entity);

init(sql);

con.commit();


if (upload != null)
SharingUtil.getFile(upload, this.getUploadFileName(), sno,
SharingConstants.sharing);

Log.info(getClass(), "-----Save end-----");
isValidate=true;
result = SUCCESS;

}else{

this.setEntityDesc(sql,sSql);
this.setEntity(entity);
init(sql);
isValidate=false;
result = INPUT;
}
}else{
if (this.lengthValidate() && isSaveValidate(sql)) {
sno=sql.save(entity,SharingConstants.saveDocument,SharingConstants.sharing,oldStatus);
this.setSno(sno);
entity=sql.getSharing(sno,"</p>");

this.setEntityDesc(sql,sSql);
this.setEntity(entity);

init(sql);
con.commit();


if (upload != null)
SharingUtil.getFile(upload, this.getUploadFileName(), sno,SharingConstants.sharing);

Log.info(getClass(), "-----Save end-----");

isValidate=true;
result = SUCCESS;

}else{ 
this.setEntityDesc(sql,sSql);
this.setEntity(entity);
init(sql);
isValidate=false;
result = INPUT;
}
} 
}
}

}

if (!tp.equals("Exit")){
isValidate=false;
}





} catch (SizeLimitExceededException e) {
Log.info(this.getClass(), "SizeLimitExceededException:" + e.getMessage());
mess.add("SizeLimitExceededException:"+e.getMessage());
this.setStatusName(SharingConstants.New);
result=INPUT;
if (con!=null) con.close();

} catch (IOException e) {
Log.info(this.getClass(), "IOException:" + e.getMessage());
mess.add("IOException:"+e.getMessage());
this.setStatusName(SharingConstants.New);
result=INPUT;
if (con!=null) con.close();

} catch (FileUploadException e) {
Log.info(this.getClass(), "FileUploadException:" + e.getMessage());
//          this.addActionError("Exception:"+e.getMessage());
mess.add("FileUploadException:"+e.getMessage());
this.setStatusName(SharingConstants.New);
result=INPUT;
if (con!=null) con.close();

} catch (Exception e) {
Log.info(this.getClass(), "Save exception:" + e.getMessage());
mess.add("Exception:"+e.getMessage());
this.setStatusName(SharingConstants.New);
result=INPUT;
//          this.addActionError("Exception:"+e.getMessage());

if (con!=null) con.close();

}finally{
//          this.setEntityDesc(sql,sSql);   
//          this.setEntity(entity);
//          
//          init(sql);
//          isValidate=false;
if (con!=null) con.close();

}
return result;
}

private String urgency="";
public String geturgency() {
return urgency;
}
public void seturgency(String urgency) {
this.urgency = urgency;
}
}

我想我应该得到的值从jsp去我的行动,但不做我所期望的。

注意:还有其他文本框和下拉框,我删除了上面的代码,所有这些都是工作的,除了紧急下拉框,我添加。

在调试模式的控制台上也没有发现异常或错误

您的urgencysetter名称不正确;它们应该遵循JavaBean命名约定,为setUrgency/getUrgency

无关的

:

  • 动作方法应该被命名为save,以遵循Java命名约定。
  • 所有参数都应该通过setter(或ModelDriven)来检索,这里不需要访问操作上下文。
  • 你的大多数异常处理可以通过一个单一的多捕获来处理。
  • 这个动作远,
  • 一般来说,setter应该只是设置。如果setter要做的不仅仅是设置,它应该有一个更明显的名字。

还有更多,但现在已经足够了:)

相关内容

  • 没有找到相关文章

最新更新