Bug when rendering <s:select> tag that contains UTF-8 characters in "listValue" 
attribute AFTER client-side validation
----------------------------------------------------------------------------------------------------------------------

                 Key: WW-3289
                 URL: https://issues.apache.org/struts/browse/WW-3289
             Project: Struts 2
          Issue Type: Bug
    Affects Versions: 2.1.8
         Environment: Centos 5.3
Java 1.6
Tomcat 6.0.20
Struts 2.1.8
            Reporter: Fernando Manrique


Hi:
I really don't know what component is the one that is failing (I guess the 
validation interceptor), so I'll try to explain as many details as possible.

I have my form.jsp as follows:

<s:form action="saveTeam" namespace="/2" method="post" 
enctype="multipart/form-data" validate="true">
   <s:textfield name="team.name" value="%{team.name}" 
label="%{getText('label.name')}" size="25" required="true" maxlength="50"/>
   <s:select name="team.stadium.idStadium" value="%{team.stadium.idStadium}" 
label="%{getText('label.stadium')}" list="stadiums" listKey="idStadium" 
listValue="name"/>
   <s:file name="image" label="label.image" accept="image/jpeg"/>
   <s:hidden name="team.idTeam" value="%{team.idTeam}"/>
   <s:submit value="%{getText('button.label.submit')}"/>
</s:form>

I used the "Preparable interface approach" to repopulate controls when 
validation fails, and it worked flawlessly, but... in this example, when the 
name of the stadium has UTF-8 characters (for example: á, ñ, ö), the HTML page 
doesn't finish rendering AFTER validation errors (the first time, the form.jsp 
is displayed correctly without problems), and it stops at the <select> tag 
before the "weird" character.

This is the HTML code:

<form id="saveTeam" name="saveTeam" onsubmit="return validateForm_saveTeam();" 
action="/2/saveTeam.action" method="post" enctype="multipart/form-data" 
onreset="clearErrorMessages(this);clearErrorLabels(this);">
<table class="wwFormTable">
    <tbody><tr errorfor="saveTeam_team_name">
    <td colspan="2" align="center" valign="top"><span class="errorMessage">You 
must enter a name!</span></td>
</tr>
<tr>
    <td class="tdLabel"><label for="saveTeam_team_name" 
class="errorLabel">Name<span class="required">*</span>:</label></td>
    <td><input name="team.name" size="25" maxlength="50" value="" 
id="saveTeam_team_name" type="text"></td>
</tr>

        <tr>
    <td class="tdLabel"><label for="saveTeam_team_stadium_idStadium" 
class="label">Stadium:</label></td>
    <td><select name="team.stadium.idStadium" 
id="saveTeam_team_stadium_idStadium">
    <option value="3" selected="selected">Deportivo Espa
                
                
        
The stadium name is "Deportivo España", but somehow the "ñ" isn't displayed, 
and everything after that is ignored. 
I also tried with other characters like á or ö, and every time the <select> tag 
reaches the firs UTF-8 character it stops displaying the rest of the page.
This ONLY happens AFTER validation errors. The first time the page is rendered, 
"Deportivo España" is shown correctly, and if I submit the form without any 
validation errors it works without problems.
Also if there aren't any "strange" characters like "ñ", when there are 
validation errors the select tag displays correctly AFTER validation too.
I think this is an UTF8 problem...

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