*
The moose likes Struts and the fly likes how to dynamically generate struts2 form tags and populate with action Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Frameworks » Struts
Bookmark "how to dynamically generate struts2 form tags and populate with action" Watch "how to dynamically generate struts2 form tags and populate with action" New topic
Author

how to dynamically generate struts2 form tags and populate with action

vijay dadhwal
Ranch Hand

Joined: Dec 02, 2008
Posts: 47

Dear All,

I am working on a Canteen Software project based on Struts2 / jsp / hibernate / MYSQL.

I have a requirement that in a jsp page i have to add a row of struts2 input fields dynamically when user clicks on Add Button.
Along with the row 3 buttons are also added Save, Cancel, Edit

All this is working allright using javascript.

my problem is that since these set of rows are loaded dynamically as per user choice, hence they have no relation to action properties.

how do i populate these to action properties ?

Waiting for your advises

Regards
Vijay Kumar





MCA , SJCP
Mohana Rao Sv
Ranch Hand

Joined: Aug 01, 2007
Posts: 485

I didn't understand what you want to do, can you share screen shot as per your requirement.


ocjp 6 — Feeding a person with food is a great thing in this world. Feeding the same person by transferring the knowledge is far more better thing. The reason is the amount of satisfaction which we get through food is of only one minute or two. But the satisfaction which we can get through the knowledge is of life long.
vikas byn
Ranch Hand

Joined: Mar 18, 2011
Posts: 80
vijay dadhwal wrote:Dear All,

I am working on a Canteen Software project based on Struts2 / jsp / hibernate / MYSQL.

I have a requirement that in a jsp page i have to add a row of struts2 input fields dynamically when user clicks on Add Button.
Along with the row 3 buttons are also added Save, Cancel, Edit

All this is working allright using javascript.

my problem is that since these set of rows are loaded dynamically as per user choice, hence they have no relation to action properties.

how do i populate these to action properties ?

Waiting for your advises

Regards
Vijay Kumar







if your input fields have same name, then you can get these using array.
vijay dadhwal
Ranch Hand

Joined: Dec 02, 2008
Posts: 47

Hi,

i have to add students details in a jsp as per attached pictures.


The problem i am facing is that the row of input fields (performance.standard & performance.marks) are generated dynamically on the Add Button Click (using javascript), hence thereby there can be any no of rows of such input fields. Though i have decalred performance & student object in the action properties but action performance property setter is never fired after action submit. Only other properties which are hardcorded in jsp page using struts2 form tags are fired in the action.


how do i populate the dynamically added performance input elements row object in the jsp to action.
cosequently the target jsp output.jsp does not display performance object properties

[code]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<%@ taglib uri="/struts-tags" prefix="s"%>
<html>
<head>
<title>Ajax Test</title>
<style type="text/css">
.errorMessage {color:red;}
</style>
<script language="javascript">


function cost_addRow(tableid,button,value)
{
button.disabled = "true";
var table = document.getElementById(tableid);
var rowcount = table.rows.length;
var colcount = table.rows[0].cells.length;
colcount+=1; // provision for 1 more column for save buttons
var row = table.insertRow(rowcount);
for (var i=0;i<colcount;i++)
{
var newcell = row.insertCell(i);
var id=tableid+rowcount+i;
switch (i)
{
case 0:
newcell.innerHTML='<s:textfield id="'+id+'" name="perform.standard" value="'+value+'" size="20" theme="simple"/>';
break;
case 1:
newcell.innerHTML='<s:textfield id="'+id+'" name="perform.marks" value="'+value+'" size="10" theme="simple"/>';
break;
case 2:
newcell.innerHTML='<input id="'+id+'" type="button" value="Save">';
newcell.childNodes[0].onclick=new Function("saveRow('"+tableid+"','"+rowcount+"','"+colcount+"')");
break;
}
}

}

function saveRow(tableid,row_no,total_cells)
{
var table = document.getElementById(tableid);

for (var i=0;i<total_cells;i++)
{
var id = tableid+row_no+i;
var element = document.getElementById(id);
element.disabled="true";
}

var button = document.getElementById("performance_button");
button.disabled = "";
}
></script>

</head>
<body>
<table >
<s:form action="output">
<tr ><td>
<s:textfield name="stud.name" label="student name" size="20" />
<s:select label="student sex code" name="stud.sex" list="{'Male', 'Female'}" />
</td></tr>
<tr><td>
<table id="performance" >
<tr>
<td>Standard</td>
<td>Marks</td>
</tr>
</table>
</td></tr>
<tr><td> </td><td><input id="performance_button" type="button" value="Add" onclick="cost_addRow('performance',this,'' )" /></td></tr>
<tr><td> </td></tr>

<tr><td> </td>
<td>
<s:submit value="Save" theme="simple"/>
</td></tr>
</s:form>
</table>

</body>
</html>

[code]

Action Code
[code]
package test;
import com.opensymphony.xwork2.*;

public class studentaction extends ActionSupport
{
student stud;
performance perform;

public studentaction()
{
System.out.println("new action instance");
}

public student getStud() {
return stud;
}
public void setStud(student stud) {
System.out.println("stud setter");
this.stud = stud;
}
public performance getPerform() {

return perform;
}
public void setPerform(performance perform)
{
this.perform = perform;
System.out.println("performance setter");
}
public String collect()
{


return SUCCESS;
}

}

[code]

student class

[code]
package test;

import java.util.ArrayList;
import java.util.List;

public class student
{
String name;
String sex;
List<performance> performance = new ArrayList<performance>();

public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public List<performance> getPerformance() {
return performance;
}
public void setPerformance(List<performance> performance) {
this.performance = performance;
}

}

[code]

performance class
[code]
package test;

public class performance
{
String standard;
int marks;

public String getStandard() {
return standard;
}
public void setStandard(String standard) {
this.standard = standard;
}
public int getMarks() {

return marks;
}
public void setMarks(int marks)
{
this.marks = marks;
}


}

[code]

output jsp
[code]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<%@ taglib uri="/struts-tags" prefix="s"%>

1<s:property value="stud.name"/>
2<s:property value="stud.sex"/>
3<s:property value ="perform.standard"/>
4<s:property value ="perform.marks"/>

[code]


[Thumbnail for Picture1.png]

[Thumbnail for Picture2.png]

 
wood burning stoves
 
subject: how to dynamically generate struts2 form tags and populate with action
 
Similar Threads
Struts2 - Select - Ajax
struts2 redirect from action login
How to retain automatically generated fields on pageload in struts2
Locale Switching in Struts2
Problem populating a newly created HashMap in a Struts2 Action