Hi jignesh,

jignesh(india) wrote:
Hello,
    I have read your conversion here,
    I am having a strange problem in my converter.

     case 1:-
    JSP
    <s:textfield name="myDate"/>

    classname-conversion.properties
    myDate = tutorial.MyTypeConverter
case 2:-
    JSP
    <s:textfield name="user.myDate"/>

    classname-conversion.properties
    user.myDate = tutorial.MyTypeConverter
Now the problem here is that if i use case 1 i am successfully able to call
the convertToString(Map arg0, Object arg1) but in case 2 i am not able to
call convertToString(Map arg0, Object arg1).
This is precisely the point I was making in my last email. For your conversion to work with user.myDate, you need to create a properties file named User-conversion.properties and locate it in the directory src/main/resources/org/appfuse/model (assuming your User class is an org.appfuse.model.User). Then inside that file, you put:

mydate = tutorial.MyTypeConverter

This assumes of course that your "MyTypeConverter" class is in a package named "tutorial".

Rob Hills wrote:
Hi All,

Well, after much trial and error, I've worked out how to do POJO-level
TypeConverters. the Struts Type Converter page (see
http://struts.apache.org/2.x/docs/type-conversion.html) unfortunately
leaves out some key details that make it quite difficult.

1.      create the Type Converter class and as described on the Struts site
(see above) and as I outlined below. The Struts website says in one place that you should extend org.apache.struts2.util.StrutsTypeConverter and in another that you should "implement the TypeConverter interface". I extended StrutsTypeConverter and that worked fine.

2.      Create your XXX-conversion.properties file.  Its name needs to be the
same as your POJO class name (not fully-qualified). So, for my example below, I called it Shift-conversion.properties. The key thing to note is that this file must end up in the same directory as your POJO's .class file. So, in Appfuse, put it under your src/main/resources directory, in a path that matches your class package. My Shift-conversion.properties file ended up in src/main/resources/au/com/myapp/model.

3.      Inside your XXX-conversion.properties file, define each attribute (or
field, whatever you want to call it) that you want handled by your converter. The definitions are specified as
follows, one per line:

  myAttributeName = fully.qualified.typeconverter.name

so, to continue my example below, I had two fields in my Shift class that
I wanted to be handled by my TimeTypeConverter class, "startTime" and "endTime". I defined them like
this:

startTime=au.com.myapp.webapp.action.converters.TimeTypeConverter
endTime=au.com.myapp.webapp.action.converters.TimeTypeConverter

And that's all there is to it!

On 24 Oct 2007 at 23:13, Rob Hills wrote:

Hi All,

I'm trying to implement a model.attribute-level TypeConverter but I can't
get it to work. I want to convert between "time" on a form (hh:mm) and a Date class in my model.

I'm using AppFuse 2.0 + Hibernate + Struts2

I have an "au.com.myapp.model.Shift" class that contains two Date
attributes "startTime" and "endTime". Before I started creating a converter, I had a data entry form that displayed the startTime and endTime values as dates in text fields, as you'd expect. If I put time values in those fields (hh:mm) I get type conversion errors from
the default date type converter, again as expected.

I've followed the Struts documentation here:

http://struts.apache.org/2.x/docs/type-conversion.html

and created:

  - au.com.myapp.webapp.action.converters.BaseTypeConverter.java
    (Abstract type, extends org.apache.struts2.util.StrutsTypeConverter
and provides base functionality like logging etc.)

  - au.com.myapp.webapp.action.converters.TimeTypeConverter.java
    (extends au.com.myapp.webapp.action.converters.BaseTypeConverter.java
and implements convertFromString and convertToString methods (which convert between the Date object and the time string representation.
  - Shift-conversion.properties (in my src/main/resources directory)
which contains the following two lines:
    startTime=au.com.myapp.webapp.action.converters.TimeTypeConverter
    endTime=au.com.myapp.webapp.action.converters.TimeTypeConverter

>From my reading, that should be all I need to do.  However, when I build
and run my app with this setup, the form's behaviour doesn't change. Further, I've put logging into the converter class (both the constructor and the methods) and it appears it's never called.

Is there some other undocumented thing I need to do, or have I
misunderstood the documentation?
This took me many hours of trial-and-error, so I hope this post will save
someone else the same heartache one day.
HTH,

Rob Hills
Waikiki, Western Australia

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

Reply via email to