When using <html:html xhtml="true"> the form name is not used but the id, and the client
validation using javascript fails
--------------------------------------------------------------------------------------------------------------------------
Key: STR-2859
URL: http://issues.apache.org/struts/browse/STR-2859
Project: Struts Action 1
Type: Bug
Components: Taglibs
Versions: 1.2.8
Environment: Linux Fedora 5
Tomcat 5.5 and JBoss 4.0.3
Struts 1.2.8
Reporter: Manuel Valladares
When we use client javascript validation we have a problem when we try to set the strict xhtml
format in the <html:html> tag.
For example, in the following jsp code:
<%@ page contentType="text/html; charset=utf-8" language="java" %>
<%@ taglib uri="/tags/struts-tiles" prefix="tiles" %>
<%@ taglib uri="/tags/struts-bean" prefix="bean" %>
<%@ taglib uri="/tags/struts-html" prefix="html" %>
<%@ taglib uri="/tags/struts-logic" prefix="logic" %>
<%@ taglib uri="/tags/c" prefix="c" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html:html xhtml="true" locale="true">
<html:errors/>
<html:javascript formName="TmpForm"/>
<head>
</head>
<html:form action="/Tmp.do" method="get" onsubmit="return validateTmpForm (this)">
<html:text property="aparam"/>
<html:submit/>
<html:cancel/>
</html:form>
</html:html>
The generated code for the form is:
<form id="TmpForm" method="get" action="/MRE/Tmp.do;jsessionid=50AB02D65B89E98624364A26680EF831"
onsubmit="return validateTmpForm (this)">
As you see, it doesn't have a "name" property but a "id".
And the validation javascript function created is:
function validate....(form) {
var isValid = true;
var focusField = null;
var i = 0;
var fields = new Array();
var formName = form.getAttributeNode("name");
oRange = eval('new ' + formName.value + '_floatRange()');
[...........]
return isValid;
}
But the form doesn't have a "name" property. And the javascript fails.
If you change the generated javascript code looking for "id" instead of "name" everything
should work fine.
For example, you could produce a code like:
function validate....(form) {
var isValid = true;
var focusField = null;
var i = 0;
var fields = new Array();
var formName = form.getAttributeNode("name") ? form.getAttributeNode("name") : form.getAttributeNode("id");
oRange = eval('new ' + formName.value + '_floatRange()');
[...........]
return isValid;
}
Hope this helps.
Manuel Valladares
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/struts/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira
|