You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tapestry.apache.org by Apache Wiki <wi...@apache.org> on 2006/03/04 01:28:39 UTC

[Jakarta-tapestry Wiki] Update of "CreatingCustomTranslators" by AndreasBulling

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="gender@TextField" 
- 				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: tapestry-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tapestry-dev-help@jakarta.apache.org