Author: jkuhnert
Date: Sat Dec 16 13:53:28 2006
New Revision: 487902
URL: http://svn.apache.org/viewvc?view=rev&rev=487902
Log:
Resolves TAPESTRY-957 (sort of).
Made dojo client side required check not skip file upload fields so that we can
at least check that much on
the client side. Rest of the issue lies solely with the jakarta commons
fileupload devs.
Modified:
tapestry/tapestry4/trunk/tapestry-examples/Workbench/src/context/Upload.html
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/multipart/AbstractMultipartDecoder.java
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/multipart/MultipartDecoderImpl.java
tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/validate/check.js
Modified:
tapestry/tapestry4/trunk/tapestry-examples/Workbench/src/context/Upload.html
URL:
http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-examples/Workbench/src/context/Upload.html?view=diff&rev=487902&r1=487901&r2=487902
==============================================================================
---
tapestry/tapestry4/trunk/tapestry-examples/Workbench/src/context/Upload.html
(original)
+++
tapestry/tapestry4/trunk/tapestry-examples/Workbench/src/context/Upload.html
Sat Dec 16 13:53:28 2006
@@ -18,7 +18,8 @@
<table class="form">
<tr>
<th><span jwcid="@FieldLabel"
field="component:inputFile"/>:</th>
- <td><input jwcid="[EMAIL PROTECTED]" file="ognl:file" size="30"
displayName="File" validators="validators:required"/></td>
+ <td><input jwcid="[EMAIL PROTECTED]" file="ognl:file" size="30"
+ displayName="File"
validators="validators:required"/></td>
</tr>
<tr>
<th>Options:</th>
Modified:
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/multipart/AbstractMultipartDecoder.java
URL:
http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/multipart/AbstractMultipartDecoder.java?view=diff&rev=487902&r1=487901&r2=487902
==============================================================================
---
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/multipart/AbstractMultipartDecoder.java
(original)
+++
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/multipart/AbstractMultipartDecoder.java
Sat Dec 16 13:53:28 2006
@@ -127,7 +127,8 @@
if (part == null)
_valueParts.put(name, new ValuePart(value));
- else part.add(value);
+ else
+ part.add(value);
}
private String extractFileItemValue(FileItem item)
Modified:
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/multipart/MultipartDecoderImpl.java
URL:
http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/multipart/MultipartDecoderImpl.java?view=diff&rev=487902&r1=487901&r2=487902
==============================================================================
---
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/multipart/MultipartDecoderImpl.java
(original)
+++
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/multipart/MultipartDecoderImpl.java
Sat Dec 16 13:53:28 2006
@@ -35,8 +35,7 @@
* @author Joe Panico
* @since 4.0
*/
-public class MultipartDecoderImpl extends AbstractMultipartDecoder implements
- ServletMultipartDecoder
+public class MultipartDecoderImpl extends AbstractMultipartDecoder implements
ServletMultipartDecoder
{
/* maximum size of file allowed to be uploaded */
@@ -45,36 +44,35 @@
public HttpServletRequest decode(HttpServletRequest request)
{
_encoding = request.getCharacterEncoding();
-
+
ServletFileUpload upload = createFileUpload();
-
+
try
{
List fileItems = upload.parseRequest(request);
-
+
processFileItems(fileItems);
}
catch (FileUploadException ex)
{
- throw new ApplicationRuntimeException(MultipartMessages
- .unableToDecode(ex), ex);
+ throw new
ApplicationRuntimeException(MultipartMessages.unableToDecode(ex), ex);
}
-
+
Map parameterMap = buildParameterMap();
-
+
return new UploadFormParametersWrapper(request, parameterMap);
}
private ServletFileUpload createFileUpload()
{
- FileItemFactory factory = new DiskFileItemFactory(_thresholdSize,
- new File(_repositoryPath));
+ FileItemFactory factory = new DiskFileItemFactory(_thresholdSize, new
File(_repositoryPath));
ServletFileUpload upload = new ServletFileUpload(factory);
-
+
// set maximum file upload size
upload.setSizeMax(_maxSize);
-
- if (_encoding != null) upload.setHeaderEncoding(_encoding);
+
+ if (_encoding != null)
+ upload.setHeaderEncoding(_encoding);
return upload;
}
Modified:
tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/validate/check.js
URL:
http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/validate/check.js?view=diff&rev=487902&r1=487901&r2=487902
==============================================================================
---
tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/validate/check.js
(original)
+++
tapestry/tapestry4/trunk/tapestry-framework/src/js/dojo/src/validate/check.js
Sat Dec 16 13:53:28 2006
@@ -12,7 +12,9 @@
if(profile.digit instanceof Array){for(var i = 0; i < profile.digit.length;
i++){var elem = form[profile.digit[i]];if(dj_undef("type", elem) || elem.type
!= "text" && elem.type != "textarea" && elem.type != "password"){ continue; }
elem.value = elem.value.replace(/\D/g, "");}}
if(profile.required instanceof Array){for(var i = 0; i <
profile.required.length; i++){if(!dojo.lang.isString(profile.required[i])){
continue; }
-var elem = form[profile.required[i]];if(!dj_undef("type", elem) && (elem.type
== "text" || elem.type == "textarea" || elem.type == "password") &&
/^\s*$/.test(elem.value)){missing[missing.length] = elem.name;}
+var elem = form[profile.required[i]];if(!dj_undef("type", elem)
+&& (elem.type == "text" || elem.type == "textarea" || elem.type == "password"
|| elem.type == "file")
+&& /^\s*$/.test(elem.value)){missing[missing.length] = elem.name;}
else if(!dj_undef("type", elem) && (elem.type == "select-one" || elem.type ==
"select-multiple")
&& (elem.selectedIndex == -1
||
/^\s*$/.test(elem.options[elem.selectedIndex].value))){missing[missing.length]
= elem.name;}