Q. How do I get the latest version of Webwork2 and XWork from CVS?
cvs -d :pserver:guest@cvs.dev.java.net:/cvs login
(Use an empty password, just hit enter..)
cvs -d :pserver:guest@cvs.dev.java.net:/cvs checkout webwork
cvs -d :pserver:guest@cvs.dev.java.net:/cvs checkout xwork
Q. How do I build Webwork2/Xwork
Just go into the xwork or webwork directory and run 'ant' (you must have ant installed and have the jars of junit and clover inside $ANT_HOME/lib)
Once you have built the xwork.jar copy it into the webwork/lib/core folder, and delete the old one.
Q. How do I use messages from within the validator?
<validators> <field name="name"> <field-validator type="requiredstring"> <message key="template.name.errors.required">A default message in case the key is not found</message> </field-validator> </field> </validators>
Q. How do I set a global resource bundle?
Java class (thanks Drew McAuliffe):
public class WebworkGlobalMessagesListener implements ServletContextListener { private static Logger log = Logger.getLogger(WebworkGlobalMessagesListener.class); private static final String DEFAULT_RESOURCE = "global-messages"; /** * Uses the LocalizedTextUtil to load messages from the global message bundle. * @see javax.servlet.ServletContextListener#contextInitialized(javax.servlet.Servle tContextEvent) */ public void contextInitialized(ServletContextEvent arg0) { log.info("Loading global messages from " + DEFAULT_RESOURCE); LocalizedTextUtil.addDefaultResourceBundle(DEFAULT_RESOURCE); log.info("Global messages loaded."); } /** * @see javax.servlet.ServletContextListener#contextDestroyed(javax.servlet.ServletContextEvent) */ public void contextDestroyed(ServletContextEvent arg0) { // do nothing } }
web.xml:
(under listeners section)
<listener> <listener-class>mypackagename.WebworkGlobalMessagesListener</listener-class> </listener>
Q. How do I change the error message for invalid inputted fields?
A: You need to create a message for that field, for example if you have a user.dob field you would use this in your messages file (see above for example on setting a global messages file):
invalid.fieldvalue.user.dob=Please enter Date of Birth in the correct format.
Q. How do I get access to the Session?
A: ActionContext.getContext().getSession() (returns Map, works internally using a ThreadLocal)
Q. How can I see all parameters passed into the Action?
A: ActionContext.getParameters() (returns Map, works internally using a ThreadLocal)
Q. How can I get the HttpServletRequest?
A: ServletActionContext.getRequest() (works internally using a ThreadLocal)
Q: How can I use the IOC container to initialize a component in another object that isnt an action?
A: obtain the ComponentManager from the request: ComponentManager cm = (ComponentManager) ServletActionContext.getRequest().getAttribute("DefaultComponentManager");
then you need to initialize it using: cm.initializeObject(Object)
Q. How do I decouple XWork LocalizedTextUtil global resource bundle loading from serlvets (ServletContextListener)?
A. If you're using XWork outside a Web context, then use whatever startup hooks you have in that context (i.e. application start for a desktop app) to add the global resource bundle. This is a startup activity, so use whatever mechanisms are provided in the context you're running in.
Q. What i need to do to put values in a combobox. If I am using webwork2?
If i have :
#tag(Select "label='xxx '" "name='xxx'" "list=?") or #tag(combobox "label='Prioridade'" "name='inavis.avisTpPrioridade'" "list=?")
the values in this combobox, what i need to do?
Exemple:
html tag i use to do: <select..> <otpion value="" selected>XXX</option> </selct>
so...i need to do this using Webwork2 tags from Velocity...how can i do this??
Q. How do I add I18N to a WW2 Tag, like ww:textfield?
<ww:textfield label="'i18n.label'" name="'label1'" value="''">
A. This will get the localized text message for the key "i18n.label" and put it in the label.
<ww:textfield label="getText('i18n.label')" name="'label1'" value="''">
Q: Can I add I18N outside the Action's context? i.e. adding i18n to some JSP using the ww taglib.