[
https://issues.jboss.org/browse/SEAMINTL-70?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12672962#comment-12672962
]
Gerald Turner commented on SEAMINTL-70:
---------------------------------------
I apologize about my bad attempt to use the Messages bean, I understand Seam3
and CDI a lot better now than I did months ago. This bug still holds true that
there should be better documentation.
My understanding is that Messages should work like the following:
@Inject
private Messages m;
public void doSomething() {
// Messages with severity and fixed summary
m.info("Info message");
m.warn("Warning message!");
// Interpolated summary
m.error("There is an error with {0}", foo);
// Summary and detail
m.info("Info").detail("Process complete");
// Interpolated summary and detail
m.info("Stored {0}", foo)
.detail("{0} has been stored to the database")
.detailParams(foo);
}
...none of this nonsense I had originally posted about injecting a
TemplateMessage.
There are a few caveats (bugs?) which sent me down the wrong path:
1. Interpolation is homebrew and doesn't work like java.text.MessageFormat
(formatting not supported, e.g. "{1,time}", and no brace escape with archaic
apostrophe problem, e.g. "array='{'{2}'}'").
2. org.jboss.seam.faces.status.MessagesAdapter explicitly ignores the detail
message (overriding with null), making some of my use cases not work with JSF,
code:
void convert(@Observes @Before @RenderResponse final PhaseEvent event,
Messages messages) {
Set<Message> savedMessages = (Set<Message>) context.get(FLASH_MESSAGES_KEY);
if (savedMessages != null) {
for (Message m : savedMessages) {
event.getFacesContext().addMessage(m.getTargets(),
new FacesMessage(getSeverity(m.getLevel()), m.getText(), null));
... note that null at the end!
FYI I'm using Seam 3.1.0.Final now.
> Document usage of BundleTemplateMessage/TemplateMessage
> -------------------------------------------------------
>
> Key: SEAMINTL-70
> URL: https://issues.jboss.org/browse/SEAMINTL-70
> Project: Seam International
> Issue Type: Feature Request
> Components: Messages
> Affects Versions: 3.1.0.Beta3
> Reporter: Gerald Turner
> Assignee: Ken Finnigan
> Priority: Optional
> Fix For: 3.1.1.Beta1
>
> Original Estimate: 3 hours
> Remaining Estimate: 3 hours
>
> As a user, the current documentation is sufficient for severity+text
> messages, however on closer inspection of the Message class, I see that
> detail and targets properties are available, much like FacesMessage.
> I dug around the seam-international source and experimented with a bean
> having fields/method like the following:
> @Inject
> private Messages messages;
> @Inject
> private transient TemplateMessage message;
> public void doSometing() {
> messages.add(message.level(Level.WARN).text("Text {0}, {1},
> {2}").textParams('a', 'b', 'c').detail("Detail {0}, {1},
> {2}").detailParams(1, 2, 3).targets("message").build());
>
> messages.add(message.level(Level.FATAL).text("Fatality!").targets("message").build());
> }
> This works. A few caveats:
> * TemplateMessage field has to be marked transient, otherwise get WELD error
> during deployment about Serializable bean having non-Serializable field.
> * Make sure to call add(Message) signature (invoke build()) instead of
> add(MessageBuilder), otherwise only the most recent message is added.
> * doSomething method is not reentrant/thread-safe because of the builder.
> I'd prefer to use Messages instead of the builders, perhaps have a methods
> like info(String text, String details, String targets, Object... args),
> however that gets ugly with the varargs, having to cast Object[], etc.
> Perhaps I should stick with FacesMessages.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.jboss.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira
_______________________________________________
seam-issues mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/seam-issues