New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Implict navigation handling for empty string outcomes #747
Comments
@glassfishrobot Commented |
@glassfishrobot Commented |
@glassfishrobot Commented |
@glassfishrobot Commented |
@glassfishrobot Commented Include deprecation text on element. https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=744
Section 10.3.2. Correct xref to point to section in appendix that
To ease migration for Facelet taglibraries declared using pre-JSF 2.0 Use of this DTD is officially deprecated. This DTD is included for https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=588
insert around text for h:link and h:button https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=639
change "name" to "type" on description of f:event tag https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=509
Declare that the old, incorrect, Facelets decaration of the uri for https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=673
Clarify what should happen if the target attribute is not specified. https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=642
table 14.4.1, change responseTxt to responseText reorder rows in table 14.3 make use case for event listeners be correct. https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=635
3.5.3, 3.5.6.1: remove references to UInput.encodeEnd(). Not for a https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=740
|
@glassfishrobot Commented |
@glassfishrobot Commented |
@glassfishrobot Commented |
@glassfishrobot Commented |
@glassfishrobot Commented |
|
Gang -
One of our unit tests here at Oracle tripped up over a small change in behavior between JSF 1.2 and JSF
2. The unit test contains an action method that returns an empty string, eg:
<h:commandButton action="#
{foo.doSomething}
"/>
public String doSomthing()
{
// Do something here
return "";
}
When running against JSF 1.2, the empty string outcome would result in the test case remaining on the
same page, as there is no navigation case that matches this outcome. In JSF2, implicit navigation kicks
in. In particular, the following statement from section 7.4.2 is applied:
In our case, we have the following values:
The resulting view id after applying the above logic is "region/". This ends up being treated as an
implicit view id. In our particular test case, there is no view associated with this view id. Instead of
remaining on the same page, we now attempt to navigate to a view that does not exist.
Our test case made the assumption that returning the empty string from the outcome would result in
the same behavior as returning null. This was true in JSF 1.2, but no longer appears to be true in JSF2.
We have tweaked this unit test to return null so that our tests are now passing, but I wanted to follow
up to find out whether this small difference in behavior between "" and null outcomes is intentional. It
seems to me that these should behave the same. It would be easy enough for us to add a sentence to
the spec that states that empty string outcomes should not be treated as implicit view ids. Does
anyone here know of a reason why we shouldn't spec this?
FWIW, my feeling is that, while returning null is a reasonable workaround, there is no way that our unit
test is not the only code out there that is returning empty action outcomes and expecting to stay on the
same page. I would like to see this behavior preserved not so that we can revert our unit test to its
previous behavior (I am fine with our fix), but because the current behavior may break other users as
they upgrade to JSF2.
Environment
Operating System: All
Platform: Macintosh
Affected Versions
[2.0]
The text was updated successfully, but these errors were encountered: