11.03.2017, 09:20, Lukasz Lenart kirjoitti:
This is do the changes in ActionSupport's dependencies, you must
inject them first to have access to resource bundles.

Instead your approach with singleton you can use something like this

public class DbConnectionManager {

   public DbConnectionManager(@Inject TextProvider textProvider) {
     String driverNames = textProvider.getText("database.drivers");
     ...
   }
}

and then

public class MyAction extends ActionSupport {

   public String execute() {
     DbConnectionManager mgr = container.inject(DbConnectionManager.class)
     ....
   }
}

but perhaps the best option would be to disconnect your DAO layer from
Web layer, you have coupled two different layers which is a "bad
design" ™
Thanks, I will have a look at this.

I now that the particular example was a bit of a hack. DBConnectionManager inherited ActionSupport only for the sole purpose of getting easy access to the resource files (just rely on the framework to find it; no need to hard code any path or filename). Changing this is not such a big deal; something like DbConnectionManager.class.getResourceAsStream("package.properties") should work.

A related question is how to access resources from a static context. For example if I have an Enum whose constants are based on strings defined in the resource files, what would be a proper way to access them? I am thinking of something like:

public Enum Event
{
    SOME_EVENT(0, "header.some_event"),
    ANOTHER_EVENT(1, "header.another_event"),
    ...

    private final int eventId;
    private final String eventString;

    private LogEvent(int id, String description)
    {
        eventId = id;
        // How to achieve the following conversion of a generic
        // header into how its defined in the resource files?
        eventString = getText(string);
    }
}

Is there a nice way to handle this with getText, or should I again use getResourceAsStream or some other non-Struts facility?

-Heikki

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscr...@struts.apache.org
For additional commands, e-mail: user-h...@struts.apache.org

Reply via email to