Hi

I can confirm that it is possible to use the sj:tabbedpanel tag within a
form. I've included a working example below (sorry about the size). One
important thing to note is that you need to set theme="simple" on your
s:form tag. If you use the default style which uses tables for layout and
look at the generated HTML you will see that your tabs are totally screwed.
(This also happens if you design a s:form using the <fieldset> tag)

HTH
Regards

<s:form action="edit-rma" theme="simple" method="POST">
<s:hidden name="rmaId" value="%{rmaId}"/>

<s:if test="%{fieldErrors.size > 0}">
        
You have errors on this page

</s:if>

<sj:tabbedpanel id="localtabs" selectedTab="0">
          <sj:tab id="tab1" target="productDetails" label="Product"/>
      <sj:tab id="tab2" target="customerDetails" label="Customer" />
      <sj:tab id="tab3" target="repairDetails" label="Repair"/>
      <sj:tab id="tab4" target="shippingDetails" label="Shipping"/>
<div id="productDetails">

<table>
<tr>
<td class="tdLabel"><label for="rma.serialNumber">Serial
Number:</label></td> 
<td><s:textfield name="rma.serialNumber" value="%{rma.serialNumber}"/>
        <s:fielderror><s:param>rma.serialNumber</s:param></s:fielderror></td>
</tr>
<tr>
<td class="tdLabel"><label for="rma.UnitNumber">Unit Number:</label></td>
<td><s:textfield name="rma.unitNumber" value="%{rma.unitNumber}"/></td>
</tr>
<tr>
<td class="tdLabel"><label for="rma.faultDescription.comment">Fault
Description:</label>
<td><s:textarea cols="45" name="rma.faultDescription.comment"
value="%{rma.faultDescription.comment}"/>
</tr>
</table>

<table id="requestItems">
<tr>
<th>Requested Items.</th>
<th>Value.</th>
</tr>
<tr class="requested">
<td><s:textfield cssClass="description"
name="rma.requestedItems[0].description"
value="%{rma.requestedItems[0].description}"/></td>
<td><s:textfield name="rma.requestedItems[0].value"
value="%{rma.requestedItems[0].value}"/>
<s:fielderror><s:param>rma.requestedItems[0].value</s:param></s:fielderror></td>
<td id="cell1" onclick="clickFunction(this)"> resources/images/plus.jpeg
</td>
</tr>
<tr class="requested">
<td><s:textfield cssClass="description"
name="rma.requestedItems[1].description"
value="%{rma.requestedItems[1].description}"/></td>
<td><s:textfield name="rma.requestedItems[1].value"
value="%{rma.requestedItems[1].value}"/>
<s:fielderror><s:param>rma.requestedItems[1].value</s:param></s:fielderror></td>
<td id="cell2" onclick="clickFunction(this)"> resources/images/plus.jpeg
</td>
</tr>
<tr class="requested">
<td><s:textfield cssClass="description"
name="rma.requestedItems[2].description"
value="%{rma.requestedItems[2].description}"/></td>
<td><s:textfield name="rma.requestedItems[2].value"
value="%{rma.requestedItems[2].value}"/>
<s:fielderror><s:param>rma.requestedItems[2].value</s:param></s:fielderror></td>
<td id="cell3" onclick="clickFunction(this)"> resources/images/plus.jpeg
</td>
</tr>
<tr class="requested">
<td><s:textfield cssClass="description"
name="rma.requestedItems[3].description"
value="%{rma.requestedItems[3].description}"/></td>
<td><s:textfield name="rma.requestedItems[3].value"
value="%{rma.requestedItems[3].value}"/>
<s:fielderror><s:param>rma.requestedItems[3].value</s:param></s:fielderror></td>
<td id="cell4" onclick="clickFunction(this)"> resources/images/plus.jpeg
</td>
</tr>
<tr class="requested">
<td><s:textfield cssClass="description"
name="rma.requestedItems[4].description"
value="%{rma.requestedItems[4].description}"/></td>
<td><s:textfield name="rma.requestedItems[4].value"
value="%{rma.requestedItems[4].value}"/>
<s:fielderror><s:param>rma.requestedItems[4].value</s:param></s:fielderror></td>
<td id="cell5" onclick="clickFunction(this)"> resources/images/plus.jpeg
</td>
</tr>
<tr class="requested">
<td><s:textfield cssClass="description"
name="rma.requestedItems[5].description"
value="%{rma.requestedItems[5].description}"/></td>
<td><s:textfield name="rma.requestedItems[5].value"
value="%{rma.requestedItems[5].value}"/>
<s:fielderror><s:param>rma.requestedItems[5].value</s:param></s:fielderror></td>
<td></td>
</tr>
</table>
</div>
<div id="customerDetails">
<table>
<tr>
<td class="tdLabel"><s:label for="rma.customer.memberId">Forum
Id:</s:label></td>
<td><s:textfield name="rma.customer.memberId"
value="%{rma.customer.memberId}"/>
        <s:fielderror><s:param>rma.customer.memberId</s:param></s:fielderror>
<td>
</tr>
<tr>
<td class="tdLabel"><s:label for="rma.customer.memberName">Forum
Name:</s:label></td>
<td><s:textfield name="rma.customer.memberName"
value="%{rma.customer.memberName}"/></td>
</tr>
<tr>
<td class="tdLabel"><s:label for="rma.customer.firstName">First
Name:</s:label></td>
<td><s:textfield name="rma.customer.firstName"
value="%{rma.customer.firstName}"/></td>
</tr>
<tr>
<td class="tdLabel"><s:label for="rma.customer.lastName">Last
Name:</s:label></td>
<td><s:textfield name="rma.customer.lastName"
value="%{rma.customer.lastName}"/></td>
</tr>
<tr>
<td class="tdLabel"><s:label for="rma.customer.address.addressLine1">Address
Line 1:</s:label></td>
<td><s:textfield name="rma.customer.address.addressLine1"
value="%{rma.customer.address.addressLine1}"/></td>
</tr>
<tr>
<td class="tdLabel"><s:label for="rma.customer.address.addressLine2">Address
Line 2:</s:label></td>
<td><s:textfield name="rma.customer.address.addressLine2"
value="%{rma.customer.address.addressLine2}"/></td>
</tr>
<tr>
<td class="tdLabel"><s:label for="rma.customer.address.addressLine3">Address
Line 3:</s:label></td>
<td><s:textfield name="rma.customer.address.addressLine3"
value="%{rma.customer.address.addressLine3}"/></td>
</tr>
<tr>
<td class="tdLabel"><s:label for="rma.customer.address.addressLine4">Address
Line 4:</s:label></td>
<td><s:textfield label="Address Line 4"
name="rma.customer.address.addressLine4"
value="%{rma.customer.address.addressLine4}"/></td>
</tr>
<tr>
<td class="tdLabel"><s:label for="rma.customer.address.addressLine5">Address
Line 5:</s:label></td>
<td><s:textfield name="rma.customer.address.addressLine5"
value="%{rma.customer.address.addressLine5}"/></td>
</tr>
<tr>
<td class="tdLabel"><s:label for="rma.customer.phoneNumber.number">Phone
Number:</s:label></td>
<td><s:textfield label="Phone Number" name="rma.customer.phoneNumber.number"
value="%{rma.customer.phoneNumber.number}"/>

<s:fielderror><s:param>rma.customer.phoneNumber.number</s:param></s:fielderror><td>
</tr>
<tr>
<td class="tdLabel"><s:label for="rma.customer.email">Email
Address:</s:label></td>
<td><s:textfield label="Email Address" name="rma.customer.email"
value="%{rma.customer.email}"/>
<s:fielderror><s:param>rma.customer.email</s:param></s:fielderror></td>
</tr>
</table>
</div>
<div id="repairDetails">
<table>
<tr>
<td class="tdLabel"><s:label for="warrantyDate">Warranty/Shipping Status
(dd.mm.yyyy):</s:label></td>
<td><s:textfield name="warrantyDate"  value="%{warrantyDate}"/>
        <s:fielderror><s:param>warrantyDate</s:param></s:fielderror>
</td>
</tr>
<tr>
<td class="tdLabel"><s:label for="goodInDate">Goods In Date
(dd.mm.yyyy):</s:label></td>
<td><s:textfield name="goodsInDate" value="%{goodsInDate}"/>
<s:fielderror><s:param>goodsInDate</s:param></s:fielderror>
</td>
</tr>
<tr>
<td class="tdLabel"><s:label for="rma.goodsInDescription.comment">Goods In
condition:</s:label></td>
<td><s:textarea label="Goods In Condition" cols="45"
name="rma.goodsInDescription.comment"
value="%{rma.goodsInDescription.comment}"/></td>
</tr>
<tr>
<td class="tdLabel"><s:label for="rma.repairDetails.comment">Repair
Details:</s:label></td>
<td><s:textarea cols="45" name="rma.repairDetails.comment"
value="%{rma.repairDetails.comment}"/><td>
</tr>
<tr>
<td class="tdLabel"><s:label for="rma.repairCost">Cost of
Repairs</s:label></td>
<td><s:textfield name="rma.repairCost" value="%{rma.repairCost}"/>
<s:fielderror><s:param>rma.repairCost</s:param></s:fielderror>
</td>
</tr>
<tr>
<td class="tdLabel"><s:label for="rma.generalRemarks.coment">Other
Comments:</s:label></td>
<td><s:textarea cols="45" name="rma.generalRemarks.comment"
value="%{rma.generalRemarks.comment}"/></td>
</tr>
</table>
</div>
<div id="shippingDetails">
<table>
<tr>
<td class="tdLabel"><s:label for="shippingDate">Shipping Date
(dd.mm.yyyyy):</s:label></td>
<td><s:textfield name="shippingDate" value="%{shippingDate}"/></td>
<s:fielderror><s:param>shippingDate</s:param></s:fielderror>
</tr>
<tr>
<td class="tdLabel"><s:label for="rma.courier">Courier:</s:label></td>
<td><s:textfield name="rma.courier" value="%{rma.courier}"/></td>
</tr>
<tr>
<td class="tdLabel"><s:label for="rma.trackerNumber">Tracker
No:</s:label></td>
<td><s:textfield name="rma.trackerNumber"
value="%{rma.trackerNumber}"/></td>
</tr>
<tr>
<td class="tdLabel"><s:label for="rma.shippingCost">Shipping
Cost:</s:label></td>
<td><s:textfield name="rma.shippingCost" value="%{rma.shippingCost}"/>
<s:fielderror><s:param>rma.shippingCost</s:param></s:fielderror>
</td>

</tr>
<tr>
<td class="tdLabel"><s:label for="rma.shippingComment">Shipping
Comment:</s:label></td>
<td><s:textarea cols="45" name="rma.shippingComment.comment"
value="%{rma.shippingComment.comment}"/></td>
</tr>
</table>
</div>
</sj:tabbedpanel>



<sj:submit cssClass="vMenuItemText" targets="rmaDetails"
onCompleteTopics="reloadGrid"/>

</s:form>


--
View this message in context: 
http://struts.1045723.n5.nabble.com/How-to-use-tabbed-panels-with-s-form-tp4910789p4920522.html
Sent from the Struts - User mailing list archive at Nabble.com.

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscr...@struts.apache.org
For additional commands, e-mail: user-h...@struts.apache.org

Reply via email to