You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@myfaces.apache.org by "Mark van den Boomen (JIRA)" <de...@myfaces.apache.org> on 2009/06/23 11:46:07 UTC
[jira] Created: (TRINIDAD-1517) PPR doesn't work correctly with
tr:inputListOfValues updating a tr:selectOneChoice
PPR doesn't work correctly with tr:inputListOfValues updating a tr:selectOneChoice
----------------------------------------------------------------------------------
Key: TRINIDAD-1517
URL: https://issues.apache.org/jira/browse/TRINIDAD-1517
Project: MyFaces Trinidad
Issue Type: Bug
Affects Versions: 1.0.10-core, 1.0.7-core
Environment: Windows XP, IE6/IE7, Firefox3, Safari 4, OC4J 10.1.3.1.0, Trinidad 1.0.7-1.0.10
Reporter: Mark van den Boomen
There is some weird PPR behaviour when updating a tr:selectOneChoice with a PPR event caused by a tr:inputListOfValues, the problem is that the tr:selectOneChoice's value doesn't get updated. See the code sample below:
JSP:
<tr:form>
<tr:inputListOfValues id="testLov"
value="#{test.myString}"
immediate="true"
autoSubmit="false"
action="#{test.testLov}"
/>
<tr:panelGroupLayout layout="horizontal">
<tr:selectOneChoice id="poplist" value="#{test.myString}" readOnly="false" partialTriggers="testLov">
<f:selectItem itemLabel="Germany" itemValue="de"/>
<f:selectItem itemLabel="Netherlands, the" itemValue="nl"/>
<f:selectItem itemLabel="United Kingdom" itemValue="uk"/>
</tr:selectOneChoice>
<tr:outputText id="txtbox" value="#{test.myString}" partialTriggers="testLov" />
</tr:panelGroupLayout>
</tr:form>
Bean:
public class Test {
private String myString;
public String testLov(){
CoreInputListOfValues lovComponent;
FacesContext context = FacesContext.getCurrentInstance();
UIViewRoot vr = context.getViewRoot();
lovComponent = (CoreInputListOfValues)vr.findComponent("testLov");
String value = (String)lovComponent.getValue();
this.myString = value;
return null;
}
public void setMyString(String myString) {
this.myString = myString;
}
public String getMyString() {
return myString;
}
}
Steps to reproduce:
1. type value 'nl' in the tr:inputListOfValues
2. click on the flashlight-icon to trigger the action (action should set the value of the bean property)
3. the tr:selectOneChoice is not updated to the new value. The tr:outputText is updated correctly.
Also notice that if you replace the tr:inputListOfValues with some other component like a tr:inputText with autosubmit enabled that the tr:selectOneChoice will update correctly.
The workaround I found was to force the viewroot to refresh itself and forget the state in the action method of the tr:inputListOfValues:
/* Force page refresh */
String currentView = vr.getViewId();
ViewHandler vh = context.getApplication().getViewHandler();
UIViewRoot x = vh.createView(context, currentView);
x.setViewId(currentView);
context.setViewRoot(x);
But I still don't think this is the behaviour it should be.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.