> 1) What is locale$select doing in
> ="#{locale$select.selectStudent}"? Is that assuming there
> is a properties file you're using for locale? I'm familiar with useing
> "#{foo.bar}" and "${bar}", but the notation isn't familiar to me.
locale$select is a backing bean, defined by Shale's view controller
> 2) You call select.selectStudent and set a parameter "name" to the value of
> the current student, "#{s}" ... I understand that forcing an action will
> cause that portion of the table to be updated, but how do I place multiple
> 'sub-rows' in a row initially, without requiring a user to click on a
> particular row? Does the immediate="true" attribute force the action to
> take place as the table is rendering? If so, that is excellent, I didn't
> realize the immediate attribute would do that for an action (like a
> commandLink or commandButton). My goal is to populate this entire table on
> first loading, and not requiring a user to click on a particular row to see
> the many sub-rows in a column.
>
> TR
>
> ________________________________
>
> From: Gary VanMatre [mailto:[EMAIL PROTECTED]
> Sent: Wednesday, April 19, 2006 5:51 PM
>
> To: MyFaces Discussion
> Subject: RE: Constructing Datatable with Columns Having Foreign Key
> references
>
>
>
> How about something like this:
>
> JSP:
> <h:form id="test">
> <h:dataTable value="#{locale$select.classes}"
> var="class">
> <h:column>
> <f:facet name="header">
> <f:verbatim>Students</f:verbatim>
> </f:facet>
> <h:dataTable value="#{class.students}" var="s">
> <h:column>
> <h:commandLink
> action="#{locale$select.selectStudent}" value="#{s}"
> immediate="true">
> &n bsp;&n bsp; <f:param name="name" value="#{s}"/>
> </h:commandLink>
> </h:column>
> </h:dataTable>
> </h:column>
> <h:column>
> <f:facet name="header">
> <f:verbatim>Class Id</f:verbatim>
> </f:facet>
> <h:outputText value="#{class.id}"/>
> </h:column>
> <h :column>
> <f:facet name="header">
> <f:verbatim>Description</f:verbatim>
> </f:facet>
> <h:outputText value="#{class.description}"/>
> </h:column>
>
> </h:dataTable>
> </h:form>
>
> Managed Bean:
> public ClassInfo[] getClasses() {
> ClassInfo[] classes = new ClassInfo[3];
> classes[0] = new ClassInfo(new Integer(100), "Basket Weaving");
> classes[1] = new ClassInfo(new Integer(200), "Industrial arts");
> classes[2] = new ClassInfo(new Integer(300), "Computer Science");
>
> return classes;
>
> }
>
>
> public String selectStudent() {
> FacesContext facesContext = FacesContext.getCurrentInstance();
> String name = (String)
> facesContext.getExternalContext().getRequestParameterMap().get("name");
> &nbs p;&nbs p; System.out.println(name);
>
> return null;
> }
>
> ClassInfo Class:
> public class ClassInfo {
> private Integer id = null;
> private String description = null;
>
>
> public ClassInfo(Integer id, String description) {
> this.id = id;
> this.description = description;
> }
>
> public String getDescription() {
> return description;
> }
>
> public void setDescription(String description) {
> this.description = description;
> }
>
> public Integer getId() {
> return id;
> }
>
> public void setId(Integer id) {
> this.id = id;
> }
>
>
> public String[] getStudents() {
> //FacesContext facesContext = FacesContext.getCurrentInstance();
> // simulate a db call
> if (id.equals(100)) {
> return new String[] {
> "Bob", "Sally", "Fred"
> };
> } else if (id.equals(200)) {
> return new String[] {"Joe", "Ben"};
> } else
> return new String[] {"Gary", "Zane", "Seth"};
>
> }
>
>
> }
>
> Gary
>
> -------------- Original message --------------
> From: "Romanowski, Tim" <[EMAIL PROTECTED]>
>
> Gary, thanks for the suggestion, but I'm not sure I understand how this will
> help me:
>
> Are you suggesting to use the datalist within my datatable? In such a case,
> the value returned by "#{countryList.countries}" is dependent upon the row
> id of my datatable. So I would have several columns in my datatable, of
> which one of those columns can have multiple 'sub-rows' per datatable row.
> When I render my datatable, how would I access the current row id in a bean
> so that I can do a calculation for displaying more data in _another_ column
> for the _same_ row? Emphasis added since the wording can get tricky.
>
> I could solve this by having two Lists, one which is used for the datatable,
> and another used by the particular column. I could then synchronize those
> lists myself, and write some spaghetti to increment a counter every time I
> grab the data for the particular multi-row column. However, that is a
> pretty ugly way of handling this, and I'm hoping there is an elegant (or at
> least less ugly) solution. Thoughts?
>
> ________________________________
> From: Gary VanMatre [mailto:[EMAIL PROTECTED]
> Sent: Wednesday, April 19, 2006 4:16 PM
> To: MyFaces Discussion
> Subject: RE: Constructing Datatable with Columns Having Foreign Key
> references
>
>
>
> You might give the dataList component a look. The rowIndexVar will give you
> the current row
> (http://myfaces.apache.org/tomahawk/dataList.html).
>
> <t:dataList id="data1"
> styleClass="standardList"
> var="country"
> value="#{countryList.countries}"
> layout="simple"
> rowCountVar="rowCount"
> rowIndexVar="rowIndex">
> <h:outputText value="#{country.name}" />
> <h:outputText value=", " rendered="#{rowIndex + 1 < rowCount}" />
> </t:dataList>
>
>
> Gary
> -------------- Original message --------------
> From: "Romanowski, Tim" <[EMAIL PROTECTED]>
>
> Perhaps to point this in a useful direction: is it possible to get a value
> of the current row (such as "row.id") from the FacesContext in a bean? For
> example:
>
> <t:column>
> <f:facet name="header">
> <f:verbatim>MyValues</f:verbatim>
> </f:facet>
> <h:outputText value="${currentRow.currentRowValues}" />
> </t:column>
>
> Is it possible to access another value for the currentRow object, such as
> currentRow.ID, by calling the FacesContext in a backing bean? If so, what is
> the proper way to do this?
>
>
>
>
> ________________________________
> From: Romanowski, Tim
> Sent: Wednesday, April 19, 2006 9:57 AM
> To: [email protected]
> Subject: Constructing Datatable with Columns Having Foreign Key references
>
>
>
>
> When constructing a myfaces (tomahawk) datatable, I have a couple columns
> that each contain foreign key references. How do you guys handle the
> situation where a given row in a datable might have a column that itself has
> multiple rows? In other words, row 1 of my datable has a column which
> itself contains several rows. It doesn't seem like placing a child
> datatable within a parent datatable will necessarily solve anything, since I
> don't know what data goes in the current row until I know the value of a
> column in the current row.
>
> From reading looking through the archives and some other sites, it looks (is
> this true?) that there is no clean way to pass a parameter of the current
> row id back to a backing bean to do some processing for dynamically
> constructing the current row. I've seen some suggestions on setting
> f:param and using that value, but setting an f:param to equal the current
> rowid in a datatable doesn't seem to work. I've also seen another kludge
> that used a 'disabled' property to set a map value, but that was, well, a
> kludge (but perhaps the best way?).
>
> Again, how are you guys constructing complex tables? Any help would be
> greatly appreciated!
>
> _____________________________________
>
> TR
>
--
Matthias Wessendorf
Aechterhoek 18
48282 Emsdetten
http://jroller.com/page/mwessendorf
mwessendorf-at-gmail-dot-com