N.B. This is in version 1.0.2 which isn't available in the version list on Bugzilla. If I have a non-null bean "myBean" which does not contain a property "nonProperty", <c:out value="${myBean.nonProperty}"/> should throw an exception according to the JSTL spec (see http://jcp.org/aboutJava/communityprocess/final/jsr052/ pages 2-11 and A-190). This is actually treated as a null value and the default is returned. This hides errors, since as the spec says "it's likely a typo or another mistake".
I can't replicate the problem, and indeed, this has always worked correctly in the Standard Taglib. If you still believe it's a problem, check the following things, as others have run into them and misdiagnosed this as a bug: 1) Ensure you are using the Stadnard Taglib and not an alternative, container- based implementation such as the one embedded in Resin. 2) Ensure that 'myBean' is truly non-null; for instance, ensure that it's not actually a scripting variable instead of a scoped variable. 3) Ensure that you're actually defining the "c" taglib with an appropriate <%@ taglib %> directive; if you don't, then <c:out ...> will be output to your page, but a browser won't display it; this causes many people to think that the tag has instead run but output nothing. If none of these situations applies, then please post a full page that demonstrates the problem.
Thanks for the quick response, and apologies... it appears your first answer is correct, I was using the resin implementation. I hadn't realised this as it's basically an undocumented (and it seems, unfinished) feature of resin which is on by default and hijacks the implementation pointed to by the TLD.