Hi again,

I forgot to note, that I'm using Trinidad 1.2.7 (released version) and JSF
RI. But it did not work with Trinidad 1.2.6 either.

--
Kind regards,
Mathias

> -----Original Message-----
> From: Mathias Walter [mailto:[EMAIL PROTECTED] 
> Sent: Monday, March 17, 2008 10:36 PM
> To: 'MyFaces Discussion'
> Subject: [Trinidad] selectOneChoice in editable table
> Importance: High
> 
> 
> Hi,
> 
> I wrote an editable table where one column contains a selectOneChoice
> component. If I edit a row and try to save the changes, all 
> underlaying
> values of the selectOneChoice component of all rows other 
> then the edited
> row will be set to null. I could not figure it out why.
> 
> I'm using PPR to change the components of one row from 
> read-only to editable
> and I also use partialSubmit to submit the data.
> 
> Below is the sample jsp and the backing bean (registered in 
> faces-config.xml
> as managed bean "tb" with session scope).
> 
> What did I forget to implement or made wrong?
> 
> test.jsp:
> 
> <[EMAIL PROTECTED] uri="http://java.sun.com/jsf/core"; prefix="f"%>
> <[EMAIL PROTECTED] uri="http://myfaces.apache.org/trinidad"; prefix="tr"%>
> <[EMAIL PROTECTED] uri="http://myfaces.apache.org/trinidad/html"; 
> prefix="trh"%>
> <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
>     pageEncoding="ISO-8859-1"%>
> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
> "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd";>
> <f:view>
> <html xmlns="http://www.w3.org/1999/xhtml";>
> <head>
>       <meta http-equiv="Content-Type" content="text/html;
> charset=ISO-8859-1" />
>       <trh:styleSheet/>
> </head>
> <body>
>       <tr:form defaultCommand="sSave" id="frmSamples">
>               <tr:panelCaptionGroup captionText="Properties">
>                       <tr:table id="tblExtProperties"
> value="#{tb.propertySet.extProperties}" 
> binding="#{tb.propertiesTable}"
> var="extProperties">
>                               <tr:column headerText="ID">
>                                       <tr:outputText
> value="#{extProperties.id}" />
>                               </tr:column>
>                               <tr:column headerText="Base Property">
>                                       <tr:selectOneChoice
> id="baseProperty" value="#{extProperties.baseProperty}"
> readOnly="#{tb.visibleOnly}" partialTriggers="sEdit sSave sReset"
> immediate="true">
>                                               <f:selectItems
> value="#{tb.properties}" id="selectedProperty"/>
>                                       </tr:selectOneChoice>
>                               </tr:column>
>                               <tr:column headerText="Actions">
>                                       <tr:panelButtonBar
> partialTriggers="sEdit sSave sReset">
>                                               <tr:commandLink 
> id="sEdit"
> actionListener="#{tb.edit}" text="Edit" partialSubmit="true"
> rendered="#{tb.visibleOnly}" immediate="true" />
>                                               <tr:commandLink 
> id="sSave"
> actionListener="#{tb.save}" text="Save" partialSubmit="true"
> rendered="#{!tb.visibleOnly}" />
>                                               <tr:commandLink 
> id="sReset"
> actionListener="#{tb.cancel}" text="Cancel" partialSubmit="true"
> rendered="#{!tb.visibleOnly}" immediate="true">
>       
> <tr:resetActionListener/>
>                                               </tr:commandLink>
>                                       </tr:panelButtonBar>
>                               </tr:column>
>                               <tr:messages globalOnly="true"
> styleClass="errors"/>
>                               <f:facet name="footer">
>                                       <tr:panelButtonBar 
> halign="center">
>                                               <tr:commandButton
> id="sSave2" text="Edit All" actionListener="#{tb.edit}" 
> immediate="true" />
>                                       </tr:panelButtonBar>
>                               </f:facet>
>                       </tr:table>
>               </tr:panelCaptionGroup>
>       </tr:form>
> </body>
> </html>
> </f:view>
> 
> backing bean:
> 
> /**
>  * 
>  */
> package beans;
> 
> import java.util.ArrayList;
> import java.util.List;
> 
> import javax.faces.event.ActionEvent;
> import javax.faces.model.SelectItem;
> 
> import org.apache.myfaces.trinidad.component.UIXTable;
> 
> public class TestBean {
>     
>     public class Property {
>       int id;
>       String name;
>       public Property(int id, String name) {
>               this.id = id;
>               this.name = name;
>       }
>       @Override
>       public String toString() {
>               return name;
>       }
>     }
>     
>     Property[] m_Properties = new Property[] { new 
> Property(1, "prop1"), new
> Property(2, "prop2"), new Property(3, "prop3") };
>     
>     public class ExtendedProperty {
>       int id;
>       Property baseProperty;
>               public ExtendedProperty(int id, Property bp) {
>                       this.id = id;
>                       this.baseProperty = bp;
>               }
>               public int getId() {
>                       return id;
>               }
>               public Property getBaseProperty() {
>                       return baseProperty;
>               }
>               public void setBaseProperty(Property baseProperty) {
>                       System.err.println("Changing base 
> property from " +
> this.baseProperty + " to " + baseProperty);
>                       this.baseProperty = baseProperty;
>               }
>               @Override
>               public String toString() {
>                       return id + ":" + baseProperty;
>               }
>     }
>     
>     public class PropertySet {
>       List<ExtendedProperty> extProperties = new
> ArrayList<ExtendedProperty>();
>       public PropertySet() {
>               extProperties.add(new ExtendedProperty(1, 
> m_Properties[0]));
>               extProperties.add(new ExtendedProperty(2, 
> m_Properties[2]));
>       }
>               public List<ExtendedProperty> getExtProperties() {
>                       return extProperties;
>               }
>               public void setExtProperties(List<ExtendedProperty>
> extProperties) {
>                       this.extProperties = extProperties;
>               }
>     }
>     
>       private boolean visibleOnly = true;
>     PropertySet propertySet = new PropertySet();
>       private UIXTable propertiesTable;
>       public UIXTable getPropertiesTable() {
>               return propertiesTable;
>       }
>       public void setPropertiesTable(UIXTable propertiesTable) {
>               this.propertiesTable = propertiesTable;
>       }
>     
>       public List getProperties() {
>               List properties = new ArrayList();
>               for (Property p : m_Properties)
>                       properties.add(new SelectItem(p, p.toString()));
>               return properties;
>       }
>       
>       public PropertySet getPropertySet() {
>               return propertySet;
>       }
>       public void setPropertySet(PropertySet propertySet) {
>               this.propertySet = propertySet;
>       }
>       
>       public void setVisibleOnly(boolean attribute) {
>               this.visibleOnly = attribute;
>       }
>       public boolean isVisibleOnly() {
>               return visibleOnly;
>       }
> 
>       public void edit(ActionEvent actionEvent) {
>               visibleOnly = false;
>       }
>       
>       public void cancel(ActionEvent actionEvent) {
>               visibleOnly = true;
>       }
>       
>       public void reset(ActionEvent actionEvent) {
>               visibleOnly = true;
>       }
> 
>       public void save(ActionEvent actionEvent) {
>               System.err.println("saving property...");
>               ExtendedProperty ep =
> (ExtendedProperty)propertiesTable.getRowData();
>               System.err.println(ep);
>               System.err.println(propertySet.extProperties);
>               visibleOnly = true;
>       }
> }

Reply via email to