|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object wicket.model.AbstractDetachableModel wicket.model.AbstractReadOnlyDetachableModel wicket.model.StringResourceModel
public class StringResourceModel
This model class encapsulates the full power of localization support within
the Wicket framework. It combines the flexible Wicket resource loading
mechanism with property expressions, property models and standard Java
MessageFormat
substitutions. This combination should be able
to solve any dynamic localization requirement that a project has.
The model should be created with four parameters, which are described in detail below:
ComponentStringResourceLoader
. The
relative component may actually be null
when all resource
loading is to be done from a global resource loader. However, we recommend
that a relative component is still supplied even in these cases in order to
'future proof' your application with regards to changing resource loading
strategies.
null
java.text.MessageFormat
object. Each parameter may
be an ordinary Object, in which case it will be processed by the standard
formatting rules associated with java.text.MessageFormat
.
Alternatively, the parameter may be an instance of IModel
in
which case the getObject()
method will be applied prior to the
parameter being passed to the java.text.MessageFormat
. This
allows such features dynamic parameters that are obtained using a
PropertyModel
object or even nested string resource models.
java.text.MessageFormat
style markup for replacement of
parameters. Where a string resource contains both types of formatting
information then the property expression will be applied first.
Example 1
In its simplest form, the model can be used as follows:
public MyPage extends WebPage { public MyPage(final PageParameters parameters) { add(new Label("username", new StringResourceModel("label.username", this, null))); } }Where the resource bundle for the page contains the entry
label.username=Username
Example 2
In this example, the resource key is selected based on the evaluation of a property expression:
public MyPage extends WebPage { public MyPage(final PageParameters parameters) { WeatherStation ws = new WeatherStation(); add(new Label("weatherMessage", new StringResourceModel("weather.${currentStatus}", this, new Model(ws))); } }Which will call the WeatherStation.getCurrentStatus() method each time the string resource model is used and where the resource bundle for the page contains the entries:
weather.sunny=Don't forget sunscreen! weather.raining=You might need an umberella weather.snowing=Got your skis? weather.overcast=Best take a coat to be safe
Example 3
In this example the found resource string contains a property expression that is substituted via the model:
public MyPage extends WebPage { public MyPage(final PageParameters parameters) { WeatherStation ws = new WeatherStation(); add(new Label("weatherMessage", new StringResourceModel("weather.message", this, new Model(ws))); } }Where the resource bundle contains the entry
weather.message=Weather station reports that
the temperature is ${currentTemperature} ${units}
Example 4
In this example, the use of substitution parameters is employed to format a quite complex message string. This is an example of the most complex and powerful use of the string resource model:
public MyPage extends WebPage { public MyPage(final PageParameters parameters) { WeatherStation ws = new WeatherStation(); Model model = new Model(ws); add(new Label("weatherMessage", new StringResourceModel( "weather.detail", this, model, new Object[] { new Date(), new PropertyModel(model, "currentStatus"), new PropertyModel(model, "currentTemperature"), new PropertyModel(model, "units") })); } }And where the resource bundle entry is:
weather.detail=The report for {0,date}, shows the temparature as {2,number,###.##} {3} \ and the weather to be {1}
Constructor Summary | |
---|---|
StringResourceModel(java.lang.String resourceKey,
Component component,
IModel model)
Construct. |
|
StringResourceModel(java.lang.String resourceKey,
Component component,
IModel model,
java.lang.Object[] parameters)
Creates a new string resource model using the supplied parameters. |
|
StringResourceModel(java.lang.String resourceKey,
Component component,
IModel model,
java.lang.Object[] parameters,
java.lang.String defaultValue)
Creates a new string resource model using the supplied parameters. |
|
StringResourceModel(java.lang.String resourceKey,
Component component,
IModel model,
java.lang.String defaultValue)
Construct. |
Method Summary | |
---|---|
Localizer |
getLocalizer()
Gets the localizer that is being used by this string resource model. |
IModel |
getNestedModel()
Gets the model used for property substitutions. |
protected java.lang.Object[] |
getParameters()
Gets the Java MessageFormat substitution parameters. |
protected java.lang.String |
getResourceKey()
Gets the resource key for this string resource. |
java.lang.String |
getString()
Gets the string currently represented by this string resource model. |
protected void |
onAttach()
Attaches to the given session. |
protected void |
onDetach()
Detaches from the given session |
protected java.lang.Object |
onGetObject(Component component)
Gets the string that this string resource model currently represents. |
void |
setLocalizer(Localizer localizer)
Sets the localizer that is being used by this string resource model. |
java.lang.String |
toString()
Override of the default method to return the resource string represented by this string resource model. |
Methods inherited from class wicket.model.AbstractReadOnlyDetachableModel |
---|
onSetObject |
Methods inherited from class wicket.model.AbstractDetachableModel |
---|
attach, detach, getObject, isAttached, setObject |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Constructor Detail |
---|
public StringResourceModel(java.lang.String resourceKey, Component component, IModel model)
resourceKey
- The resource key for this string resourcecomponent
- The component that the resource is relative tomodel
- The model to use for property substitutionsStringResourceModel(String, Component, IModel, Object[])
public StringResourceModel(java.lang.String resourceKey, Component component, IModel model, java.lang.String defaultValue)
resourceKey
- The resource key for this string resourcecomponent
- The component that the resource is relative tomodel
- The model to use for property substitutionsdefaultValue
- The default value if the resource key is not found.StringResourceModel(String, Component, IModel, Object[])
public StringResourceModel(java.lang.String resourceKey, Component component, IModel model, java.lang.Object[] parameters)
The relative component parameter should generally be supplied, as without it resources can not be obtained from resouce bundles that are held relative to a particular component or page. However, for application that use only global resources then this parameter may be null.
The model parameter is also optional and only needs to be supplied if value substitutions are to take place on either the resource key or the actual resource strings.
The parameters parameter is also optional and is used for substitutions.
resourceKey
- The resource key for this string resourcecomponent
- The component that the resource is relative tomodel
- The model to use for property substitutionsparameters
- The parameters to substitute using a Java MessageFormat objectpublic StringResourceModel(java.lang.String resourceKey, Component component, IModel model, java.lang.Object[] parameters, java.lang.String defaultValue)
The relative component parameter should generally be supplied, as without it resources can not be obtained from resouce bundles that are held relative to a particular component or page. However, for application that use only global resources then this parameter may be null.
The model parameter is also optional and only needs to be supplied if value substitutions are to take place on either the resource key or the actual resource strings.
The parameters parameter is also optional and is used for substitutions.
resourceKey
- The resource key for this string resourcecomponent
- The component that the resource is relative tomodel
- The model to use for property substitutionsparameters
- The parameters to substitute using a Java MessageFormat objectdefaultValue
- The default value if the resource key is not found.Method Detail |
---|
public Localizer getLocalizer()
public final IModel getNestedModel()
getNestedModel
in interface IModel
getNestedModel
in class AbstractDetachableModel
IModel.getNestedModel()
public final java.lang.String getString()
public void setLocalizer(Localizer localizer)
localizer
- The localizer to usepublic java.lang.String toString()
toString
in class AbstractReadOnlyDetachableModel
Object.toString()
protected java.lang.Object[] getParameters()
protected final java.lang.String getResourceKey()
protected final void onAttach()
onAttach
in class AbstractDetachableModel
protected final void onDetach()
onDetach
in class AbstractDetachableModel
protected final java.lang.Object onGetObject(Component component)
onGetObject
in class AbstractDetachableModel
component
- The component asking for the object
AbstractDetachableModel.onGetObject(Component)
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |