views:

585

answers:

4

I'm really stumped on this one. I want to output a list and have the tag file take care of commas, singular versus plural, etc. but when I display the list it completely ignores whitespace so everythingrunstogetherlikethis. I tried using the HTML entities "thinsp", "ensp" and "emsp" (I can't use "nbsp", these have to be breaking), but they're all hideously wide on IE except thinsp which is way too skinny on everything else.

Edit: won't work. The output from the tag has no spaces at all. Although any content in the JSP has normal spacing. Obviously I could just put everything in the JSP but this is code that goes on multiple JSPs, so tag files would make a lot of sense.

+1  A: 

Maybe put the jsp content in an html <pre> tag? This seems to me to be the right thing to do as the list is pre-formatted content.

alex77
A: 

So you are saying your tag doesn't print out white space at all? Is there any whitespace for it to print out?

Can you post the code, and a short example of how you use it?

evnafets
My solution was to just put all text 100% into property files. Sometimes I have to chain together things since the text is somewhat dynamic: "user1, user2 and user3 did something" for instance.
Tim Trueman
A: 

I used &#32; entity instead of space but generally I think this sucks that either ALL whitespace is eaten and one has to hack with entities or you have vast space in the generated HTML code.

gshegosh
+2  A: 

It's actually a bug in the EL parser which causes spaces in between EL expressions to be eaten. E.g.

${bean.foo} ${bean.bar} ${bean.waa}

would get printed as (assuming that they returns the very same String value as its property name is):

foobarwaa

I recall that this issue was reported somewhere before, but I can't seem to find it right now. As far now you can fix it by using JSTL c:out tag:

<c:out value="${bean.foo} ${bean.bar} ${bean.waa}" />

which correctly get printed as:

foo bar waa
BalusC