Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Jakarta-tapestry Wiki" 
for change notification.

The following page has been changed by AndreasBulling:
http://wiki.apache.org/jakarta-tapestry/CreatingCustomTranslators

The comment on the change is:
Changed "sex" to "gender" and "null" to "getMessage()"

------------------------------------------------------------------------------
  
  The important part is to implement the formatObject and parseText methods to 
convert between your object and string.
  
- In my example I have a boolean object that is the gender (aka sex) of someone 
represented by the 1 character strings M and F, defaulting to M when undefined. 
+ In my example I have a boolean object that is the gender of someone 
represented by the 1 character strings M and F, defaulting to M when undefined. 
  
  {{{
  package uk.org.chandlerfamily.tapestry.translators;
- 
- //TODO: Rename Sex to Gender - change hivemodule.xml and useage in Create
- 
  
  import java.util.Locale;
  
@@ -21, +18 @@

  import org.apache.tapestry.form.translator.AbstractTranslator;
  import org.apache.tapestry.valid.ValidatorException;
  
- public class Sex extends AbstractTranslator {
+ public class Gender extends AbstractTranslator {
        
-       private String _Sex;
+       private String _gender;
        
-       public Sex() {
+       public Gender() {
                super();
        }
  
-       public Sex(String initializer) {
+       public Gender(String initializer) {
                super(initializer);
        }
  
-       public void setSex (String sex) {
+       public void setGender(String gender) {
-               _Sex = sex;
+               this._gender = gender;
        }
        
-       public String getSex () {
+       public String getGender() {
-               return _Sex;
+               return _gender;
        }
  
        public String formatObject(IFormComponent arg0, Locale arg1, Object 
arg2) {
-               if (arg2 == null) return "M";
+               if (arg2 == null)
+                       return "M";
+ 
                return (Boolean) arg2 ? "M" : "F";
        }
  
        public Object parseText(IFormComponent field, ValidationMessages 
messages,
                        String text) throws ValidatorException {
+ 
                String [] args = new String[1];
                args[0] = text;
+ 
                if (!text.equalsIgnoreCase("M") && !text.equalsIgnoreCase("F")) 
{
-                       throw new 
ValidatorException(messages.formatValidationMessage(null, "invalid-format", 
args));   
+                       throw new 
ValidatorException(messages.formatValidationMessage(getMessage(), 
"invalid-format", args));   
                }
+ 
                return text.equalsIgnoreCase("M");
        }
  
@@ -69, +71 @@

  
  {{{
  <contribution configuration-id="tapestry.form.translator.Translators">
-       <bean name="sex" class="uk.org.chandlerfamily.tapestry.translators.Sex" 
/>
+       <bean name="gender" 
class="uk.org.chandlerfamily.tapestry.translators.Gender" />
  </contribution>
  }}}
  
@@ -81, +83 @@

                        <td><span jwcid="@FieldLabel"
                                field="component:gender" >Gender:</span></td>
                        <td><input  jwcid="[EMAIL PROTECTED]" 
-                               value="ognl:sex" 
+                               value="ognl:gender" 
                                size="1"
-                               translator="translator:sex"
+                               translator="translator:gender"
                                displayName="Gender" /></td>
  }}}
  
@@ -92, +94 @@

  {{{
  public abstract class Create extends BasePage  {
        
-       private boolean _sex=true;  //gives a default value
+       private boolean _gender = true;  //gives a default value
        
-       public boolean getSex() {
+       public boolean getGender() {
-               return _sex;
+               return _gender;
        }
        
-       public void setSex(boolean sex) {
+       public void setGender(boolean gender) {
-               _sex=sex;
+               this._gender = gender;
        }
  ...
  }}}
@@ -108, +110 @@

  
  The translator factory relies on Hivemind's Bean``Factory which enables 
passing a single String to a bean constructor.
  Implement a constructor which takes a single String as a parameter, and use 
the syntax  {{{
- <binding name="translator" value="translator:myTranslator,param"/>
+ <binding name="translator" value="translator:gender,parameter"/>
  }}}
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to