[ 
https://issues.apache.org/jira/browse/TRINIDAD-123?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Danny Robinson resolved TRINIDAD-123.
-------------------------------------

       Resolution: Fixed
    Fix Version/s: 1.0.2-core

Patch was:
      // if there were failures, then add the current input to the failuresMap
      if (inputFailures.length > 0)
      {
        // TRINIDAD-123: Use input 'name' from validators array rather than 
currInput.id
        // to avoid issues with radio buttons having numeric id suffixes
        failureMap[validators[i]] = inputFailures;
      }


> Client side validation: <tr:selectOneRadio>
> -------------------------------------------
>
>                 Key: TRINIDAD-123
>                 URL: https://issues.apache.org/jira/browse/TRINIDAD-123
>             Project: MyFaces Trinidad
>          Issue Type: Bug
>          Components: Components
>    Affects Versions: 1.2.1-core
>         Environment: Facelets 1.1.12 or JSP 2.1; SUn Java System Application 
> Server 9.0 Ur 1 Patch 03; JDK 1.6.0_01; JSF RI 1.2_04-b16-p02
>            Reporter: Graeme Steyn
>            Assignee: Danny Robinson
>            Priority: Minor
>             Fix For: 1.0.2-core
>
>
> Clientside validation does not work for the tr:selectOneRadio component. If 
> the component is marked as required and no selection is made, then you do not 
> get an error when attempting to navigate to the next page. No validation 
> message occurs and as the post back is aborted due to the JavaScript error. 
> There is no visual indication for the problem other than simple remaining on 
> the same page when clicking the next button. The problem is reproducable 
> using the following jspx: 
> <?xml version='1.0' encoding='windows-1252'?> <jsp:root
> xmlns:jsp="http://java.sun.com/JSP/Page"; version="2.1"
>           xmlns:h="http://java.sun.com/jsf/html";
>           xmlns:f="http://java.sun.com/jsf/core";
>           xmlns:tr="http://myfaces.apache.org/trinidad";
>           xmlns:trh="http://myfaces.apache.org/trinidad/html";>
>   <jsp:output omit-xml-declaration="true" doctype-root-element="html"
>  
> doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd";
>               doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN"/>
>   <jsp:directive.page contentType="text/html;charset=windows-1252"/>
>   <f:view>
>     <trh:html>
>       <trh:head title="Dialog">
>         <meta http-equiv="Content-Type"
>               content="text/html; charset=windows-1252"/>
>       </trh:head>
>       <trh:body>
>         <tr:form>
>           <tr:panelFormLayout>
>                   <tr:selectOneRadio
>               id="effort"
>               layout="vertical"
>               label="Test"
>               required="true">
>               <tr:selectItem 
>                 value="true" 
>                 label="Yes" />
>               <tr:selectItem 
>                 value="false" 
>                 label="No" />
>             </tr:selectOneRadio>
>           </tr:panelFormLayout>
>           <tr:panelButtonBar id="pageNav">
>             <tr:commandButton
>               action="continue"
>               text="continue" />
>           </tr:panelButtonBar>
>         </tr:form>
>       </trh:body>
>     </trh:html>
>   </f:view>
> </jsp:root> 
> Issue appears to be related to the function _multiValidate in 
> common-1.2.1.js.  In particular, the ID for the radio button does not appear 
> to be set correctly in the failureArray.  In the code below value ="" and on 
> 4743 currInput.id is undefined.  The required error string in 4744 is 
> however, correct.  Later manipulate of the error message then fails as the id 
> does not match "undefined".  This is based on initial observation using 
> FireBug and could well be wrong.
> 4734  var value=_getValue(currInput);
> 4735  var required=validators[i+1];
> 4736  if(required&&((value=="")||(value==null)))
> 4737  {
> 4738  requiredFormatIndex=validators[i+2];
> 4739  var requiredErrorString=_getErrorString(currInput,
> 4740  requiredFormatIndex);
> 4741  if(requiredErrorString)
> 4742  {
> 4743  failureArray[failureArray.length]=currInput.id;
> 4744  failureArray[failureArray.length]=requiredErrorString;
> 4745  requiredErrorString=_getGlobalErrorString(currInput,
> 4746  globalMessageIndex,
> 4747  requiredErrorString,
> 4748  label);
> 4749  failures+='\n'+requiredErrorString;
> 4750  }

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to