You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@struts.apache.org by Srikanth Muthyala <sr...@iitc.com.au> on 2008/02/07 02:50:01 UTC

STRUTS 2: File tag problem

Hello, 

I am using file tag works fine if a file is selected using browse button or the path is entered manually. But if file name/path is rubbish the form is not submitted at all, nothing happens. 

1. How do I control this - show error like invalid filename? 
2. Or else how to disable manual entry, only browse button works??????? 
3. I tried javascript options like onKeypress to reset value to null - didnt help. 

Please help. 
Regards, 

Srikanth  




< s:form action = "/createEnt2.do" method = "POST" enctype = "multipart/form-data" validate = "true" > s:form action = "/createEnt2.do" method = "POST" enctype = "multipart/form-data" validate = "true" > 

         < s:file name = "dc" id = "dc" accept = "text/*" label = "Digital Certificate" onkeydown = "return reset1();" />          < s:file name = "dc" id = "dc" accept = "text/*" label = "Digital Certificate" onkeydown = "return reset1();" /> 



</ </ s:form > 

</ </ s:form > 

function reset1() reset1() 

{ 

var thisForm = document.forms[0]; 

thisForm.dc.value = 'all' ; 



window.alert( "sfds" ); thisForm = document.forms[0]; 

thisForm.dc.value = 'all' ; 



window.alert( "sfds" ); 'all' ; 



window.alert( "sfds" ); "sfds" ); 

} 

Java ########################### 

private File dc ; 

private String uploadContentType ; //The content type of the file private File dc ; 

private String uploadContentType ; //The content type of the file private String uploadContentType ; //The content type of the file 

private String uploadFileName ; //The uploaded file name 

/** private String uploadFileName ; //The uploaded file name 

/** /** 

* @return the dc * @return the dc 

*/ */ 

public File getDc() { 

return dc ; 

} 



/** public File getDc() { 

return dc ; 

} 



/** return dc ; 

} 



/** /** 

* @param dc the dc to set * @param dc the dc to set 

*/ */ 

public void setDc(File dc) { 

this . dc = dc; 

} 



/** public void setDc(File dc) { 

this . dc = dc; 

} 



/** this . dc = dc; 

} 



/** /** 

* @return the uploadContentType * @return the uploadContentType 

*/ */ 

public String getUploadContentType() { 

return uploadContentType ; 

} 



/** public String getUploadContentType() { 

return uploadContentType ; 

} 



/** return uploadContentType ; 

} 



/** /** 

* @param uploadContentType the uploadContentType to set * @param uploadContentType the uploadContentType to set 

*/ */ 

public void setUploadContentType(String uploadContentType) { 

this . uploadContentType = uploadContentType; 

} 



/** public void setUploadContentType(String uploadContentType) { 

this . uploadContentType = uploadContentType; 

} 



/** this . uploadContentType = uploadContentType; 

} 



/** /** 

* @return the uploadFileName * @return the uploadFileName 

*/ */ 

public String getUploadFileName() { 

return uploadFileName ; 

} 



/** public String getUploadFileName() { 

return uploadFileName ; 

} 



/** return uploadFileName ; 

} 



/** /** 

* @param uploadFileName the uploadFileName to set * @param uploadFileName the uploadFileName to set 

*/ */ 

public void setUploadFileName(String uploadFileName) { 

this . uploadFileName = uploadFileName; 

} public void setUploadFileName(String uploadFileName) { 

this . uploadFileName = uploadFileName; 

} this . uploadFileName = uploadFileName; 

} 


RE: STRUTS 2: File tag problem

Posted by Srikanth Muthyala <sr...@iitc.com.au>.
Hi Martin,
 
Thanks for the reply. I didnt quite get what you are trying to say. My code is exactly similar to the example you given except the implementation for method "public File getUpload()". In your example it return SUCCESS and ERROR which are strings but it should return File. I have only one line "return dc". Please help if I am missing something here.
 
I tried to give some logic to getFileName() and getDc() (=getUpload()) methods but the issue is still there, if crap is typed into file field - nothing happens when submit is clicked.

Regards,

Srikanth

 
 


-----Original Message-----
From: mgainty@hotmail.com [mailto:mgainty@hotmail.com] 
Sent: Thursday, 7 February 2008 1:50 PM
To: Struts Users Mailing List
Subject: Re: STRUTS 2: File tag problem

Hi Sri

so if the config is configured something like
/WEB-INF/classes/struts-fileupload.xml
    <action name="doUpload"
class="org.apache.struts2.showcase.fileupload.FileUploadAction"
method="upload">
       <result name="success">uploadSuccess.jsp</result>
       <result name="error">uploadError.jsp</result>
  </action>

and the jsp defines the acceptable content-type and a name to call it..
 <s:file name="upload" accept="text/*"  />

org.apache.struts2.portlet.example.fileupload.FileUploadAction.java
{
   private String fileName;    //this is the FULL pathname with filename

    // since we are using <s:file name="upload" .../> the file name will be
obtained through getter/setter of <file-tag-name>FileName
    public String getUploadFileName()
    {
        return fileName;
    }
    public void setUploadFileName(String fileName)
   {
        this.fileName = fileName;
    }

   // since we are using <s:file name="upload" ... /> the File itself will
be obtained through getter/setter of <file-tag-name>
    public File getUpload()
    {
       java.io.File file;
       try
       { //try to create the file with the previously provided filename
           file= new java.io.File( filename );
        }
        catch(java.lang.NullPointerException excp)
        {
            return ERROR;
         }
         if(file.canRead())  return SUCCESS;
         else return ERROR;
    }

    public void setUpload(File upload)
    {
      this.upload = upload;
    }
}

I didnt test with the templateDir attribute..

HTH/
M-
----- Original Message -----
Wrom: FPEGAUTFJMVRESKPNKMBIPBARHDMNNSKVFVWRKJVZC
To: "Struts Users Mailing List" <us...@struts.apache.org>
Sent: Wednesday, February 06, 2008 8:50 PM
Subject: STRUTS 2: File tag problem



Hello,

I am using file tag works fine if a file is selected using browse button or
the path is entered manually. But if file name/path is rubbish the form is
not submitted at all, nothing happens.

1. How do I control this - show error like invalid filename?
2. Or else how to disable manual entry, only browse button works???????
3. I tried javascript options like onKeypress to reset value to null - didnt
help.

Please help.
Regards,

Srikanth




< s:form action = "/createEnt2.do" method = "POST" enctype =
"multipart/form-data" validate = "true" > s:form action = "/createEnt2.do"
method = "POST" enctype = "multipart/form-data" validate = "true" >

< s:file name = "dc" id = "dc" accept = "text/*" label = "Digital
Certificate" onkeydown = "return reset1();" /> < s:file name = "dc" id =
"dc" accept = "text/*" label = "Digital Certificate" onkeydown = "return
reset1();" />



</ </ s:form >

</ </ s:form >

function reset1() reset1()

{

var thisForm = document.forms[0];

thisForm.dc.value = 'all' ;



window.alert( "sfds" ); thisForm = document.forms[0];

thisForm.dc.value = 'all' ;



window.alert( "sfds" ); 'all' ;



window.alert( "sfds" ); "sfds" );

}

Java ###########################

private File dc ;

private String uploadContentType ; //The content type of the file private
File dc ;

private String uploadContentType ; //The content type of the file private
String uploadContentType ; //The content type of the file

private String uploadFileName ; //The uploaded file name

/** private String uploadFileName ; //The uploaded file name

/** /**

* @return the dc * @return the dc

*/ */

public File getDc() {

return dc ;

}



/** public File getDc() {

return dc ;

}



/** return dc ;

}



/** /**

* @param dc the dc to set * @param dc the dc to set

*/ */

public void setDc(File dc) {

this . dc = dc;

}



/** public void setDc(File dc) {

this . dc = dc;

}



/** this . dc = dc;

}



/** /**

* @return the uploadContentType * @return the uploadContentType

*/ */

public String getUploadContentType() {

return uploadContentType ;

}



/** public String getUploadContentType() {

return uploadContentType ;

}



/** return uploadContentType ;

}



/** /**

* @param uploadContentType the uploadContentType to set * @param
uploadContentType the uploadContentType to set

*/ */

public void setUploadContentType(String uploadContentType) {

this . uploadContentType = uploadContentType;

}



/** public void setUploadContentType(String uploadContentType) {

this . uploadContentType = uploadContentType;

}



/** this . uploadContentType = uploadContentType;

}



/** /**

* @return the uploadFileName * @return the uploadFileName

*/ */

public String getUploadFileName() {

return uploadFileName ;

}



/** public String getUploadFileName() {

return uploadFileName ;

}



/** return uploadFileName ;

}



/** /**

* @param uploadFileName the uploadFileName to set * @param uploadFileName
the uploadFileName to set

*/ */

public void setUploadFileName(String uploadFileName) {

this . uploadFileName = uploadFileName;

} public void setUploadFileName(String uploadFileName) {

this . uploadFileName = uploadFileName;

} this . uploadFileName = uploadFileName;

}



---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org


Re: STRUTS 2.0.9 File tag

Posted by Jeromy Evans <je...@blueskyminds.com.au>.
Srikanth Muthyala wrote:
> Can anybody tell me how to disable the manual typing of file name for File
> tag, only allow 'Browse" button. Thanks.
>
>   
Unfortunately you don't have much control over it. Perhaps you could add 
an onkeypress event listener that blocks typed input.
See here:
http://www.quirksmode.org/dom/inputfile.html

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org


STRUTS 2.0.9 File tag

Posted by Srikanth Muthyala <sr...@iitc.com.au>.
Hi,

Can anybody tell me how to disable the manual typing of file name for File
tag, only allow 'Browse" button. Thanks.

Regards,
 
Srikanth 



---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org


Re: STRUTS 2: File tag problem

Posted by Dave Newton <ne...@yahoo.com>.
--- mgainty@hotmail.com wrote:
>    private String fileName;    //this is the FULL pathname with filename

Depending on the browser this may or may not have the full pathname.

Dave



---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org


Re: STRUTS 2: File tag problem

Posted by mg...@hotmail.com.
Hi Sri

so if the config is configured something like
/WEB-INF/classes/struts-fileupload.xml
    <action name="doUpload"
class="org.apache.struts2.showcase.fileupload.FileUploadAction"
method="upload">
       <result name="success">uploadSuccess.jsp</result>
       <result name="error">uploadError.jsp</result>
  </action>

and the jsp defines the acceptable content-type and a name to call it..
 <s:file name="upload" accept="text/*"  />

org.apache.struts2.portlet.example.fileupload.FileUploadAction.java
{
   private String fileName;    //this is the FULL pathname with filename

    // since we are using <s:file name="upload" .../> the file name will be
obtained through getter/setter of <file-tag-name>FileName
    public String getUploadFileName()
    {
        return fileName;
    }
    public void setUploadFileName(String fileName)
   {
        this.fileName = fileName;
    }

   // since we are using <s:file name="upload" ... /> the File itself will
be obtained through getter/setter of <file-tag-name>
    public File getUpload()
    {
       java.io.File file;
       try
       { //try to create the file with the previously provided filename
           file= new java.io.File( filename );
        }
        catch(java.lang.NullPointerException excp)
        {
            return ERROR;
         }
         if(file.canRead())  return SUCCESS;
         else return ERROR;
    }

    public void setUpload(File upload)
    {
      this.upload = upload;
    }
}

I didnt test with the templateDir attribute..

HTH/
M-
----- Original Message -----
Wrom: FPEGAUTFJMVRESKPNKMBIPBARHDMNNSKVFVWRKJVZC
To: "Struts Users Mailing List" <us...@struts.apache.org>
Sent: Wednesday, February 06, 2008 8:50 PM
Subject: STRUTS 2: File tag problem



Hello,

I am using file tag works fine if a file is selected using browse button or
the path is entered manually. But if file name/path is rubbish the form is
not submitted at all, nothing happens.

1. How do I control this - show error like invalid filename?
2. Or else how to disable manual entry, only browse button works???????
3. I tried javascript options like onKeypress to reset value to null - didnt
help.

Please help.
Regards,

Srikanth




< s:form action = "/createEnt2.do" method = "POST" enctype =
"multipart/form-data" validate = "true" > s:form action = "/createEnt2.do"
method = "POST" enctype = "multipart/form-data" validate = "true" >

< s:file name = "dc" id = "dc" accept = "text/*" label = "Digital
Certificate" onkeydown = "return reset1();" /> < s:file name = "dc" id =
"dc" accept = "text/*" label = "Digital Certificate" onkeydown = "return
reset1();" />



</ </ s:form >

</ </ s:form >

function reset1() reset1()

{

var thisForm = document.forms[0];

thisForm.dc.value = 'all' ;



window.alert( "sfds" ); thisForm = document.forms[0];

thisForm.dc.value = 'all' ;



window.alert( "sfds" ); 'all' ;



window.alert( "sfds" ); "sfds" );

}

Java ###########################

private File dc ;

private String uploadContentType ; //The content type of the file private
File dc ;

private String uploadContentType ; //The content type of the file private
String uploadContentType ; //The content type of the file

private String uploadFileName ; //The uploaded file name

/** private String uploadFileName ; //The uploaded file name

/** /**

* @return the dc * @return the dc

*/ */

public File getDc() {

return dc ;

}



/** public File getDc() {

return dc ;

}



/** return dc ;

}



/** /**

* @param dc the dc to set * @param dc the dc to set

*/ */

public void setDc(File dc) {

this . dc = dc;

}



/** public void setDc(File dc) {

this . dc = dc;

}



/** this . dc = dc;

}



/** /**

* @return the uploadContentType * @return the uploadContentType

*/ */

public String getUploadContentType() {

return uploadContentType ;

}



/** public String getUploadContentType() {

return uploadContentType ;

}



/** return uploadContentType ;

}



/** /**

* @param uploadContentType the uploadContentType to set * @param
uploadContentType the uploadContentType to set

*/ */

public void setUploadContentType(String uploadContentType) {

this . uploadContentType = uploadContentType;

}



/** public void setUploadContentType(String uploadContentType) {

this . uploadContentType = uploadContentType;

}



/** this . uploadContentType = uploadContentType;

}



/** /**

* @return the uploadFileName * @return the uploadFileName

*/ */

public String getUploadFileName() {

return uploadFileName ;

}



/** public String getUploadFileName() {

return uploadFileName ;

}



/** return uploadFileName ;

}



/** /**

* @param uploadFileName the uploadFileName to set * @param uploadFileName
the uploadFileName to set

*/ */

public void setUploadFileName(String uploadFileName) {

this . uploadFileName = uploadFileName;

} public void setUploadFileName(String uploadFileName) {

this . uploadFileName = uploadFileName;

} this . uploadFileName = uploadFileName;

}



---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org