Search code examples
javajspstruts2strutsstruts-1

Passing value selected from jsp to Action in struts


i recently try to learn java and struts. i want to pass the selected value from my dropdown but all i receive in my action is null

here's my code

dropdown in my jsp

<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 is the post action used ob my button

 <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;
    }
}

I think i supposed to get the value from the jsp going to my action but not doing what im expecting.

Note: there's other textfield and dropdown i remove on the code above all of that is working except to the urgency dropdown that i added.

Also no exception or error found on the console on debugging mode


Solution

  • Your urgency setter names are incorrect; they should follow the JavaBean naming convention and be setUrgency/getUrgency.


    Unrelated:

    • The action method should be named save to follow Java naming convention.
    • All parameters should be retrieved via setters (or ModelDriven), there is no need to access the action context here.
    • Most of your exception handling could be handled with a single multi-catch.
    • This action does far, far too much in a single method: refactor.
    • In general, setters should just set. If a setter is doing much more than setting it should have a more-obvious name.

    There's more, but that's enough for now :)