Just speculation as I've never tried it, but wouldn't it be easier
(and more maintainable) (and more fashionable) to write a converter to
do this for you?
After all, that's why we have converters separate from renderers....
You could also use it for UIInputs as well.
-Mike
On 12/22/05, Martin Marinschek <[EMAIL PROTECTED]> wrote:
> HOHOHO!
>
> there you go ;)
>
> even though this is a component, but you can either use that and a
> component binding or copy over the code to your renderer.
>
> regards,
>
> Martin
>
> P.S.: Actually, I'm a Christkindl-believer ;)
>
> public class ComponentBean
> {
> /**
> * @return Ausgabetext mit Zeilenumbruch
> */
> public UIOutput getOutputWithBreaks()
> {
> return new OutputText();
> }
>
> /**
> * OutputText wobei <br/> beim Rendern als Zeilenumbruch
> interpretiert wird.
> */
> public static final class OutputText extends HtmlOutputText
> {
> public OutputText()
> {
> super();
> }
>
> public void encodeEnd(FacesContext context) throws IOException
> {
> String text = RendererUtils.getStringValue(context, this);
> text = HTMLEncoder.encode(text, true, true);
> text = text.replaceAll("\r","<br/>");
> renderOutputText(context, this, text, false);
> }
>
> public static void renderOutputText(FacesContext facesContext,
> UIComponent component,
> String text,
> boolean escape)
> throws IOException
> {
> if (text != null)
> {
> ResponseWriter writer = facesContext.getResponseWriter();
> boolean span = false;
>
> if(component.getId()!=null &&
> !component.getId().startsWith(UIViewRoot.UNIQUE_ID_PREFIX))
> {
> span = true;
>
> writer.startElement(HTML.SPAN_ELEM, component);
>
> HtmlRendererUtils.writeIdIfNecessary(writer,
> component, facesContext);
>
> HtmlRendererUtils.renderHTMLAttributes(writer,
> component, HTML.COMMON_PASSTROUGH_ATTRIBUTES);
>
> }
> else
> {
> span =
> HtmlRendererUtils.renderHTMLAttributesWithOptionalStartElement(writer,component,
> HTML.SPAN_ELEM,HTML.COMMON_PASSTROUGH_ATTRIBUTES);
> }
>
> if (escape)
> {
> writer.writeText(text, JSFAttr.VALUE_ATTR);
> }
> else
> {
> writer.write(text);
> }
>
> if(span)
> {
> writer.endElement(HTML.SPAN_ELEM);
> }
> }
> }
>
> }
> }
> On 12/22/05, [EMAIL PROTECTED]
> <[EMAIL PROTECTED]> wrote:
> > Oh Yes Santa (Martin) Claus ;)
> > Would be great if you could send me the code. I would be terribly grateful
> > if you could to that!
> > BIG Thx!
> >
> > Regards,
> > Andy
> >
> >
> >
> > -----Ursprüngliche Nachricht-----
> > Von: Martin Marinschek [mailto:[EMAIL PROTECTED]
> > Gesendet: Donnerstag, 22. Dezember 2005 16:47
> > An: MyFaces Discussion
> > Betreff: Re: AW: How to display Line breaks in Outputtext?
> >
> >
> > Yes, basically you'll need to do this.
> >
> > You want the code for such a thing from me?
> >
> > You'll have to nicely ask for a christmas present if you really want it ;)
> >
> > regards,
> >
> > Martin
> >
> > On 12/22/05, [EMAIL PROTECTED]
> > <[EMAIL PROTECTED]> wrote:
> > > So I have to write my own renderer for the Outputtext?
> > >
> > > Regards,
> > > Andy
> > >
> > > -----Ursprüngliche Nachricht-----
> > > Von: Martin Marinschek [mailto:[EMAIL PROTECTED]
> > > Gesendet: Donnerstag, 22. Dezember 2005 16:30
> > > An: MyFaces Discussion
> > > Betreff: Re: AW: How to display Line breaks in Outputtext?
> > >
> > >
> > > What you usually do is to replace the renderer of the output-text
> > > component - and replace all occurrences of \n with <br/> there.
> > >
> > > Plus: you need to make sure that escape="false".
> > >
> > > regards,
> > >
> > > Martin
> > >
> > > On 12/22/05, [EMAIL PROTECTED]
> > > <[EMAIL PROTECTED]> wrote:
> > > > How can I replace the \n with a <br/> on the output? By javascript?
> > > > Because when I write <h:outputText value="Hello<br/>World"/> It doesn't
> > > > work.
> > > >
> > > > If I use the pre Tag, what can happen with the layout?
> > > >
> > > > Regards
> > > > Andy
> > > >
> > > > -----Ursprüngliche Nachricht-----
> > > > Von: Luiz Carlos Geron [mailto:[EMAIL PROTECTED]
> > > > Gesendet: Mittwoch, 21. Dezember 2005 14:13
> > > > An: MyFaces Discussion
> > > > Betreff: Re: AW: How to display Line breaks in Outputtext?
> > > >
> > > >
> > > > > So the user has to write \n hardcoded into the textarea? Isn't there
> > > > > a way
> > > > > to recognize a Carriage Return, when the user presses the CR Key?
> > > > No. When you submit a form that contains a textarea, if you have typed:
> > > >
> > > > line
> > > > other line
> > > >
> > > > Then if you make:
> > > >
> > > > String str1 = this.getInputTextarea1
> > > > ().getValue().toString().replace("\n","<br>");
> > > >
> > > > You'll get "line<br>other line". Don't do this replace, since maybe you
> > > > want
> > > > to put the value in a textarea again.
> > > >
> > > > > And I don't unterstand what you mean with the <pre> tag.
> > > > > Do you mean just: <pre><h:outputText value="Hello/nWorld"/></pre> and
> > > > > the
> > > > > Text is shown as Hello
> > > > > World
> > > > >
> > > > > ??
> > > > Yes, you can also replace (on the output) the "\n" with <br>. I
> > > > recommend this
> > > > last option, since it don't use the <pre> html tag, wich can break you
> > > > layout.
> > > >
> > > >
> > >
> > >
> > > --
> > >
> > > http://www.irian.at
> > >
> > > Your JSF powerhouse -
> > > JSF Consulting, Development and
> > > Courses in English and German
> > >
> > > Professional Support for Apache MyFaces
> > >
> > >
> > > ______________________________________________________________________
> > >
> > > This email and any files transmitted with it are confidential and
> > > intended solely for the use of the individual or entity to whom they
> > > are addressed. If you have received this email in error please notify
> > > your system manager.
> > >
> > > This footnote also confirms that this email message has been swept
> > > for the presence of computer viruses.
> > > ______________________________________________________________________
> > >
> >
> >
> > --
> >
> > http://www.irian.at
> >
> > Your JSF powerhouse -
> > JSF Consulting, Development and
> > Courses in English and German
> >
> > Professional Support for Apache MyFaces
> >
> >
> > ______________________________________________________________________
> >
> > This email and any files transmitted with it are confidential and
> > intended solely for the use of the individual or entity to whom they
> > are addressed. If you have received this email in error please notify
> > your system manager.
> >
> > This footnote also confirms that this email message has been swept
> > for the presence of computer viruses.
> > ______________________________________________________________________
> >
>
>
> --
>
> http://www.irian.at
>
> Your JSF powerhouse -
> JSF Consulting, Development and
> Courses in English and German
>
> Professional Support for Apache MyFaces
>