Updating/Reloading Message Bundles
Hi!,
I'm developing a JSF application which needs its Message Bundles to be updated quite regularly. The only way I've found to reload a message bundle file is to reload the context, which is not only tedious but also potentially hazardous as, under high client loads, sessions might be destroyed and the clients might lose their ongoing transactions.
Do I have any simpler way of making JSF reload a message bundle whenever it changes? Or at least force JSF to reload a message bundle when I want it to?
Kind Regards,
Guido
Well... I've removed the Duke Dollars as I've found the reply.
As there is no standard method in ResourceBundle, the non-standard way to do it involves reflection to make the cacheList field accessible, clearing it then make it private again, all of this in the ResourceBundle instance to be reloaded.
The code to do so is:
Field field = ResourceBundle.getBundle("resources.framework").getClass().getSuperclass().getDeclaredField("cacheList");
field.setAccessible(true);
sun.misc.SoftCache cache = (sun.misc.SoftCache)field.get(null);
cache.clear();
field.setAccessible(false);Obviously, where "resources.framework" is your resource bundle name.
I think that the reloading of a whole set of internationalized bundles would involve getting the faces context, retrieving all the installed locales, then acquiring the bundles one by one and applying this method.
Cheers!
Guido
Buenos Aires - Argentina
Similar Messages
-
Ipod update error message says can't write or read to IUPOD
i have itunes 7.0.1 and a 20gb ipod. i am trying to update/reload the ipod from my itunes library. my itunes library is 24gb.....
i have reformatted the ipod to factory settings and deselected the podcast category and have failed at loading the ipod. i get an error message after the reload begins which says that the "ipod cannot be read from or written to"
do i have a bad disk? or am i failing because it is trying to load the entire music library which is 4gb larger than the ipod disk.
thanks
dennisSee this troubleshooting article.
"Disk cannot be read from or written to" error syncing iPod in iTunes.
Why are you trying to load 24GB of music onto a 20Gb iPod!! -
Moving message bundle (i18n) to another package within NetBeans...
Hi,
I'm using the NetBeans GUI builder (matisse) to create an internationalized (i18n) swing application.
My bundle properties file (which contains all the internationalized labels and so on) is located in a package on the classpath. Now I want to move the bundle to another package - can this be done in an easy (automatic) fashion throughout the IDE because a lot of java classes (forms) use the bundle.
BTW, find and replace within the editor does not work because all the gui building stuff is marked as protected and cannot be edited and editing each label separately with the internationalization wizard would take me hours...
Any help would be greatly appreciated
- StephanOf course... but my java files would need some refactoring because there is a lot of code like that...
setTitle(java.util.ResourceBundle.getBundle("
com/foo/bar/bundle/Messages").getString("frame1.title"));.. which refers to a message bundle in the specified package - when I move the message bundle to another package all the references in the java files (like the example above) have to be updated.
Unfortunately 'Find and Replace' in the editor doesn't work because it is generated gui code and marked as protected.
So is there a possibility to automatically update all the references in the java files?
Thanks a lot
- Stephan -
How do I use a bean to determine which message bundle value to use?
Is there a way to use a bean to determine which message from my message bundle I use? I want to be able to call my bean in JSF/JSP page, have the bean return a String, and use that String to pick a message from my message bundle properties file. Now I can do this:
<h:outputText value="#{bundle.messageA}" />or this:
<h:outputText value="#{bean.messageName}" />where I have a method on the bean like this:
public String getMessageName(){
if(someTest == true){
return "messageA";
} else {
return "messageB";
}I want to combine the two so my bean determines which message I pick. I want to do this because I want to keep all the text a user sees in the message bundle file. However, based on the state of the bean, I want to display different messages.
Thanks in advance,Ah this way. So you want that much of nasty if statements in the bean instead? ;)
Then make use of the fact that you also can access Map values using the brace notation. E.g.
<h:outputText value="#{bundle[bean.messageKey]}"/>Where getMessageKey() returns the message key, e.g. 'messageA' or 'messageB' and so on. -
After last automatic update, error message XUL Runner error platform version 6.0.2. is not compatible with min Version 6.0.1 maxVersion 6.0.1 appeared every time I try to open/run Mozilla Firefox.
See:
*[[/questions/869812]]
*[[/questions/869951]] -
How to specify multiple message bundles in faces-config.xml
Hi
I have different properties file which I want to use as message bundle.
Message.properties
Help.properties
When I specify this in faces-config.xml
<application>
<message-bundle>/Message</message-bundle>
<message-bundle>/Help</message-bundle>
</application>
and now when I try to use that in my jsp page like this
<f:loadBundle basename="/Message" var="message"/>
<f:loadBundle basename="/Help" var="help"/>
and access any messagestring from those files I can not excess either of them. But when I use only one of them it works fine.
Am I doing something wrong or I can not do this thing at all??
Thanks in advance.I only specify one properties file in the <application> tag. That one is used for system messages. I have other properties files for labels, and another for just standard app text, so in my faces-config.xml I have something like this:
<application>
<message-bundle>message</message-bundle>
<locale-config>
<default-locale>en</default-locale>
</locale-config>
</application>
where my message.properties is used for system messages (validation, etc).
I don't list the other property files there. I have two more that I use, labels_en.properties, and standard_en.properties. Labels are words that have a : at the end or a *: for required fields. Standard are just other words that I use in my application. So on every page that I have, I start out with the following header:
<html>
<f:view locale="en_US">
<head>
<f:loadBundle basename="label" var="label"/>
<f:loadBundle basename="standard" var="standard"/>
<title>
..... -
Received notice of an update for one of my apps and when I tried to update the message reads "Account Not in this store" i must switch to a Canadian store before purchasing. I deleted app and tried to download again but still got the message. Anyone know how to fix? FYI have had phone for 2 years and this is the first time this has happened.
The Apple id that you created do you remember if you created with your region sellected as Canada or US. If so you can change Region directly on your device by clicking on App Store icon, Scroll to bottom and tap your app is, click view acct and change region
-
How do I prevent the "update available" message while I'm watching a program?
My 2011 Mac Mini is connected, via HDMI, to my 46" Samsung HD TV. I buy and rent 1080 movies and TV shows from iTunes. I also play a lot of other files that I've downloaded from other places. It's terrific except for one fly in the ointment...
No matter what I'm watching, iTunes, NetFlix, VLC, Quicktime or straight off the desktop; if there is new software available, I get that annoying message that appears in the upper right hand corner. I can slide it to the right but it comes back a few minutes later. I could stop everything and perform the upgrade 10 to 30 minutes later but is this really the way video on a Mac is supposed to work? I feel there should be a way, at least, to pervent this from happening when I'm watching a program/movie/TV show. If it happens between, fine but why does it always have to pester me when I'm trying to enjoy watching T.V.?
I know there is a way to turn it off, for the day, but come on- There's got to be a better solution than that. My U-Verse box very rarely bugs me about things. OSX and/or iTunes does it ALL the time. Can't it give me a break when I'm watching T.V.?
Hopefully, I just missed some setting but I've tried a few things that didn't work.
This is not a disaster but if someone knows a solution, I would be very grateful!
Thanks!
TeddyMende1,
Thanks for the super-fast response!
I believe I tried this once before but the check box for "Automatically check for updates" always comes back, the next day. However, this might be my best solution for now and I'll test it watching the latest "Ripper Street", in iTunes, tonight. If it lasts the length of the program, I'll have to decide if I want to select "This solved my question" or "This helped me."
I think I expected Apple to be a little more inTune with this. I absolutely love watching programs with my Mac Mini via HDMI. If they could find a consistent way to not interrupt programs, even with "Automatically check for updates" checked, the Mac video experience would be nearly perfect.
I do make sure to perform updates but, between my wife's Mac and my two, plus the fact that updates seem to be occuring on a weekly basis, it's not easy to update immediately. I just feel that if a person is watching a movie or T.V. program, it's very clunky to have the "update available" message continuously appearing.
Thanks again!
Teddy -
Hi All,
I am trying to work on this Scenario for Message Bundling in BPM. The Scenario is i try to collect Idocs in BPM and after 3 IDocs from R/3, BPM will merge all the 3 into one message and send this message to a flat file.
Now the problem is, though it shows Success message in SXMB_MONI, i dont get the output File.It doesnt even show the messages for my scenario in Runtime Workbench.
Can somebody pl. guide me on this .
Thanks,
RuchiHi,
I was trying to work on this Scenario for Message Bundling in BPM. The Scenario is i try to collect Idocs in BPM and after 3 IDocs from R/3, BPM will merge all the 3 into one message and send this message to a flat file.
After checking it inot SXMB_MONI_BPE i could find out the error....
<i>Bhavesh: Like you said there was an error in Variable assignment.</i>
But now the problem is , of 3 messages i only get one record in the Output Response file....
In SXMB_MONI , it shows <i>'Message is being sent'</i> for the other two.
I checked the PE for that,it doesnt show any error in the Workflow log...but for the first message it shows the complete workflow and for the other two its showing in the processing mode..
If anybody can guide me more on this..
Thanks,
Ruchi -
UPDATE FAILED MESSAGE WHEN TRYING TO DOWNLOAD FROM CC DESKTOP APP.
I keep getting an 'update failed' message everytime I try to download from my CC desktop.
What could this be?Kc2232 I would recommend reviewing the installation log for the update to determine why it is failing to install. You can find details on how to locate and interpret your installation log files at Troubleshoot install issues with log files | CC - http://helpx.adobe.com/creative-cloud/kb/troubleshoot-install-logs-cc.html. You are welcome to post any specific errors you discover to this discussion.
-
XI: How to update the Message Status (shown by transaction SXMB_MONI )
Hi
My question might be stupid, but I need you help.
I would like to know how can I update the message status what we see while using trasaction SXMB_MONI . The Scenrio is, I have a Custom Interface program build on the Abap Proxy interface method called EXECUTE_ASYNCHRONOUS.
If I am not wrong, transaction SXMB_MONI is on the XI system and also on the SAP Application system. ( But I am not sure in what way the same transaction differ in two systems )
My issue is, when I receive the xml data into a structure in abap proxy, I am doing some validation on the received message data. If I found some error in the data , then I need to update the Message status of the SXMB_MONI to ERROR flag. How to implement this ? I have not done one before. And I am not sure, if any exception like error message is raised, will it stop the proxy from processing further and update the Message Status and this can be viewed using SXMP_MONI in the SAP application system to be ERROR flag?
Or is there a BAPI or function module to handle this ?
Appreciate your help
DavidHi
I am not sure If I had understood you reply. But Would need your help to have a bit more insight to your answer. I am not completely into XI , but I am from ABAP side.
At the R/3 side , Abap Proxy object geneted has the INTERFACE and its associated METHOD, in which I am building my own abap code to do any validation on incomming data. But If I want to Raise a Exception, I understand that this Expection has to be first defined .
But do I have to define a new Z Expection class or can I just add a exception in the Proxy -Interface-method.
I have not understood this process.
All I need to do is, if I find any incomming data error , during my validation at the R/3 side, I need to stop the METHOD processing ( by any means ) and Update the Message Status flag show in SXMB_MONI to Error .
What is the trigger that i can implement in myown code that will update the Message status to Error , from R/3 perspective of using SXMB_MONI.
Thanks
David -
How do I update CAN messages being transmitted as a periodic waveform?
I am using NI-CAN 1.5 to transmit CAN messages with a CAN Object using the "Transmit Periodic Waveform" communication type. The CAN card I am using is a dual port PXI-8461.
I wish to update the waveform message(s) but am running into problems. I configure the CAN Object with a write buffer size of 2 and then start transmitting 2 messages with one message going out every 500ms. These 2 messages are correctly getting placed on the bus. To update the messages, I successfully stop the CAN Object and attempt to write new data into the write buffer. This is where I am running into problems. The ncWrite VI is failing with an error of 0xBFF62008 (Write Queue Overflow).
Upon further
inspection, I noticed that when I stopped the Object and there was only 1 of 2 messages pending, I could successfully write one time; however, the second write would fail with the same error. If 2 messages were pending, neither write would be successful. I need to be able to update both messages. I thought maybe I could use the ncWait VI to wait for the write queue to empty and then write in 2 new messages; however, this will not work since the ncWait VI never returns before a timeout occurs in "Transmit Periodic Waveform" communication type. Either 2 or 1 messages are always pending so it never sees that the card is ready for new data.
I looked in the Programmer's Reference Manual, and this is the procedure recommended. (A bit different, but I tried it and came up with the same results.) The Reference Manual claims ncWrite replaces the oldest data in the queue on page 3-30, but on page 2-40 it says ncWrite returns an error when called on a full queue.
Does anyone see anyt
hing that I'm doing wrong or have an alternate way to accomplish what I want? Thanks for your help.The "Transmit Periodic Waveform" section (pg 3-30) of the NI-CAN Programmer's Reference states, "Use this configuration to transmit a fixed sequence of CAN data frames over and over, one CAN data frame every period."
The words "fixed sequence" denote that it was not intended to change as the program runs. I appolgize if this was not clear. Any suggestions for improvement to the documentation can be emailed to [email protected]
If those two data sets do not change at run-time, they could be merged together. For example, make the buffer the size of both data sets added together. Start by Writing the first element of set one, then the first element of set two, then the second element of set one, then the second element of set two, etc.
Randy Solomonson
Application Engineer
National Instruments -
Message bundles accessed from JSF and JSP pages
Hello, everybody!
I'm developing a localized JSF application. It is working pretty well until now.
These are my message files:
mensagens.properties
mensagens_en_US.propertiesThis is how they're configured in faces-config.xml:
<application>
<resource-bundle>
<base-name>br.urca.www.biblioteca.web.mensagens</base-name>
<var>msg</var>
</resource-bundle>
</application>And this is how I access the messages in a page:
<h:outputText value="#{msg.titulo}" />Nothing new until now. But now there was a need for me to have a raw jsp page in
my web application. This page is displaying ok but I also need to access the
message bundles as I'm able to access in the normal jsp with the JSF components.
As you should know I can't use something like the above code with an +<h:outputText>+
to access the messages because this is a JSF component and I'll not be able to use
JSF components with this raw jsp page.
So, my question is: how do I access my localized messages from a raw jsp page? I
suppose there should be a way to do this, but unfortunately I started programming
to the web world in Java with JSF, not JSP, so I don't know how to do this with
JSP.
Thank you very much.
MarcosBalusC wrote:
Just include [jstl-1.2.jar|https://maven-repository.dev.java.net/repository/jstl/jars/] in your classpath and define the fmt taglib in your JSP. Nothing more is needed.
Hello, BalusC. Thank you for your help. We're almost there. After I have included the jstl-1.2.jar you provided me I can use the fmt tag and access message bundles from my raw jsp page (even though I had to provide other message bundles instead of the ones that I use in the other jsf pages, but it's better than nothing).
Now there just on problem to be fixed. The jsp page is not aware when I change the locale of my application. I change this locale in a jsf page.
I have this component:
<h:selectOneMenu value="#{pesquisaAcervo.idiomaAplicacao}"
valueChangeListener="# {pesquisaAcervo.idiomaAplicacaoMudado}" onchange="submit();">
<f:selectItems value="#{pesquisaAcervo.idiomasAplicacao}" />
</h:selectOneMenu>that calls this event in my backing bean class:
public void idiomaAplicacaoMudado(ValueChangeEvent e)
fIdiomaAplicacao.liberarItens();
Idioma idioma = Idioma.deString(e.getNewValue().toString());
// This line is for JSF
FacesContext.getCurrentInstance().getViewRoot().setLocale(idioma.localidade());
// This line is for Tiles
FacesContext.getCurrentInstance().getExternalContext().getSessionMap().
put(org.apache.tiles.locale.impl.DefaultLocaleResolver.LOCALE_KEY, idioma.localidade());
}So, do I have to include another line in the idiomaAplicacaoMudado event above in order for the jsp page load the correct resource bundle? Or what else do I have to do?
Thank you.
Marcos -
Argh! Message bundle file names are not allowed to have dots???
It took me several hours to find the reason for this exception:
java.util.MissingResourceException: Can't find bundle for base name properties\com.domain.prj.huj.MainApp.Messages, locale de_DE
at java.util.ResourceBundle.throwMissingResourceException(ResourceBundle.java:804)
at java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:773)
at java.util.ResourceBundle.getBundle(ResourceBundle.java:538)If the message bundle name contains dots (package separators), this exception is thrown! When I remove the dots, it works. But even the javadoc for ResourceBundle.getBundle() says that the baseName parameter is " the base name of the resource bundle, a fully qualified class name ".
Is it not possible to have the message bundle file names containing dots (i.e. package declarations with class names)?Nope. Periods are used to delimit packages in the basename. So given:
"com.domain.prj.huj.MainApp.Messages",
ResourceBundle will look for "com/domain/prj/hui/MainApp/Message[_local][.class|.properties]" on the class path (ie, in jars etc).
I've just had to implement an alternate RB factory to deal with legacy property files which contain periods. If you are starting from scratch, don't put in periods. -
Message Bundle class not found
Hello,
i'm using JDev 10.1.3.3, and creating ADF BC application. When i've created the jspx page, went to it's Page Definition, and in Structure editor tried to add the Message Bundle file to this page - selected the "Generate Resource Bundle" from the context menu - i'm getting error "Class ...app_XXXPageDefMsgBundle not found" .
Other pages in application got the same error.
How can i solve this problem?And in the same time, Message Bundle classes for Entity Objects (XXXRowImplMsgBundle.java) are generating well, without any errors.
Maybe you are looking for
-
I cannot get it too use entire screen. I have 3-4 inches on both sides. I did not buy a 29inch monitor to not use all of it
-
hi folks i got this ipad for christmas. i have tried in vain to get the code so i can hook up netflix. i pay for acct. i see the serial inscribed on back but i do not think that is the code. i have roku and the code can change over &over. help plea
-
hi, in third party sales my client want to make a bilingl for bill to party after recieving the incoming invoice from vendor, before of that he want to restrict the billing process that order related billing. here he dont want to do the billing befor
-
Problem in Configuring web.xml or portlet.xml
Hi all, We are developing an application on the VAP 7 using Portlets. Can some one tell me, how to trigger a servlet from the Portlet? Rather how do i configure the web.xml or the Portlet.xml to make it identify the servlet that has to be called on l
-
Adding currency validation in OY03 transaction
Hi Experts, I want to add a currency validation in the transaction OY03, since OY03 is transaction for table maintenace I have to add an event to vaidate the data entered in the sm30 screen. Since it is a standard table SAP is not allowing me to add