You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@struts.apache.org by mahanare <ma...@gmail.com> on 2009/03/25 13:26:54 UTC

Struts 2 Type conversion

Hi, I need help in resolving type conversion issue in struts 2.

Here is my problem definition.

I have a structs 2 action class called AuditTrailAction.
Here is the class definition. It contains a List<AuditView> I have given my
AuditView bean definition below.

Action contains a List which intern contains a bean containing a Map of
another bean. 

I need to display this data into a tabular structure in jsp page. 

List<AuditView>, each AuditView bean contains Map<Auditproperty> and
AuditProperty bean contains couple of properties.

for each AuditView bean in the list, I need to iterate through all the
AuditProperty beans and display their properties into a row (html table
row).

I have been spending time whole day today with no luck. it looks like there
is some type conversion issue here. I went through
http://struts.apache.org/2.x/docs/type-conversion.html, but not getting a
solution for my scenario which looks little complex. 

Please help me!
Thanks
harinath



public class AuditTrailAction extends ActionSupport implements RequestAware
{
	private List<AuditView> results;
	private int pageSize = 20;
	private int page;
	private AuditLogDao auditLog;
	private Map request;
	private String entity;
	private String pk;
	private List<String> columnLabels;

	public List<String> getColumnLabels() {
		return columnLabels;
	}

	public void setColumnLabels(List<String> columnLabels) {
		this.columnLabels = columnLabels;
	}

	public int getPage() {
		return page;
	}

	public void setPage(int page) {
		this.page = page;
	}

	public String getEntity() {
		return entity;
	}

	public void setEntity(String entity) {
		this.entity = entity;
	}

	public String getPk() {
		return pk;
	}

	public void setPk(String pk) {
		this.pk = pk;
	}

	public void setAuditLog(AuditLogDao auditLog) {
		this.auditLog = auditLog;
	}

	public List<AuditView> getResults() {
		return results;
	}

	public void setResults(List<AuditView> results) {
		this.results = results;
	}

	public String execute() {
		
		try {
			results = auditLog.getAuditTrialView(page, pageSize, entity, pk);
			columnLabels = new ArrayList<String>();
			
			if (results != null && results.size() != 0) {
				AuditView view = results.get(0);
				Map<String, AuditProperty> mapProperties = view.getPropertyList();
				Set<String> properties = mapProperties.keySet();
				for (String prop : properties) {
					columnLabels.add(prop);
				}
			}
		} catch (AuditException e) {
			e.printStackTrace();
		} catch (Exception e) {
			e.printStackTrace();
		}
		
		/*
		 * try {
		 * 
		 * results =auditLog.getAuditTrialInfo(page, pageSize); //
		 * request.put("results", results); } catch (AuditException e) { // TODO
		 * Auto-generated catch block e.printStackTrace(); }
		 */
		return SUCCESS;

	}

	public void setRequest(Map<String, Object> request) {
		// TODO Auto-generated method stub
		this.request = request;
	}

}



@SuppressWarnings("serial")
public class AuditView implements Serializable {
	
	private Map<String,AuditProperty> propertyList;// = new
ArrayList<AuditProperty>();

	public Map<String, AuditProperty> getPropertyList() {
		if(propertyList ==null)
		{
			propertyList = new HashMap<String, AuditProperty>();
		}
		return propertyList;
	}

	public void setPropertyList(Map<String, AuditProperty> propertyList) {
		this.propertyList = propertyList;
	}

}

And AuditProperty bean

 */
@SuppressWarnings("serial")
public class AuditProperty implements Serializable {
	
	private static final Log logger = LogFactory.getLog(AuditProperty.class);
	private String oldValue;
	private String newValue;
	private boolean updateFlag;
	
	
	
	public boolean isUpdateFlag() {
		return updateFlag;
	}
	public void setUpdateFlag(boolean updateFlag) {
		this.updateFlag = updateFlag;
	}
	public String getOldValue() {		
		return oldValue;
		
	}
	public void setOldValue(String oldValue) {
		this.oldValue = oldValue;
	}
	public String getNewValue() {
		return newValue;
	}
	public void setNewValue(String newValue) {
		this.newValue = newValue;
	}
	public String toString()
	{
		String value= oldValue + " : " + newValue + " : " + updateFlag;
		logger.debug(value);
		return value;
	}
-- 
View this message in context: http://www.nabble.com/Struts-2-Type-conversion-tp22700624p22700624.html
Sent from the Struts - User mailing list archive at Nabble.com.


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


Re: Struts 2 Type conversion

Posted by dusty <du...@yahoo.com>.
Seems like you have it down.  Why is it kind of?   It is only a really type
conversion issue if you need to reconstruct the graph of Map>Bean>List from
a string posted from a web page.


mahanare wrote:
> 
> kind of got a fix.
> 
> here is my jsp content.
> 
> 	<tr>
> 	<s:iterator value="columnLabels" var="label">
> 		<th><s:property value='label' /></th>
> 	</s:iterator>
> 	</tr>
> 	<s:iterator value="results" var="auditViewBean" >
> 	
> 	<tr>
> 	 <s:iterator value="propertyList" var="auditProperty">
> 	  <s:set var="keyName" value="key"></s:set>
> 	  <s:iterator value="columnLabels" var="label1">
> 	  
> 	    <s:if test= "%{#label1== #keyName}" >  	    
> 		<td><s:property value="value.newValue" /></td>
> 		</s:if>
> </s:iterator>
> 		</s:iterator>
> 		
> 	</tr>
> 	</s:iterator>
> 
> 
> 
> 
> mahanare wrote:
>> 
>> Hi, I need help in resolving type conversion issue in struts 2.
>> 
>> Here is my problem definition.
>> 
>> I have a structs 2 action class called AuditTrailAction.
>> Here is the class definition. It contains a List<AuditView> I have given
>> my AuditView bean definition below.
>> 
>> Action contains a List which intern contains a bean containing a Map of
>> another bean. 
>> 
>> I need to display this data into a tabular structure in jsp page. 
>> 
>> List<AuditView>, each AuditView bean contains Map<Auditproperty> and
>> AuditProperty bean contains couple of properties.
>> 
>> for each AuditView bean in the list, I need to iterate through all the
>> AuditProperty beans and display their properties into a row (html table
>> row).
>> 
>> I have been spending time whole day today with no luck. it looks like
>> there is some type conversion issue here. I went through
>> http://struts.apache.org/2.x/docs/type-conversion.html, but not getting a
>> solution for my scenario which looks little complex. 
>> 
>> Please help me!
>> Thanks
>> harinath
>> 
>> 
>> 
>> public class AuditTrailAction extends ActionSupport implements
>> RequestAware {
>> 	private List<AuditView> results;
>> 	private int pageSize = 20;
>> 	private int page;
>> 	private AuditLogDao auditLog;
>> 	private Map request;
>> 	private String entity;
>> 	private String pk;
>> 	private List<String> columnLabels;
>> 
>> 	public List<String> getColumnLabels() {
>> 		return columnLabels;
>> 	}
>> 
>> 	public void setColumnLabels(List<String> columnLabels) {
>> 		this.columnLabels = columnLabels;
>> 	}
>> 
>> 	public int getPage() {
>> 		return page;
>> 	}
>> 
>> 	public void setPage(int page) {
>> 		this.page = page;
>> 	}
>> 
>> 	public String getEntity() {
>> 		return entity;
>> 	}
>> 
>> 	public void setEntity(String entity) {
>> 		this.entity = entity;
>> 	}
>> 
>> 	public String getPk() {
>> 		return pk;
>> 	}
>> 
>> 	public void setPk(String pk) {
>> 		this.pk = pk;
>> 	}
>> 
>> 	public void setAuditLog(AuditLogDao auditLog) {
>> 		this.auditLog = auditLog;
>> 	}
>> 
>> 	public List<AuditView> getResults() {
>> 		return results;
>> 	}
>> 
>> 	public void setResults(List<AuditView> results) {
>> 		this.results = results;
>> 	}
>> 
>> 	public String execute() {
>> 		
>> 		try {
>> 			results = auditLog.getAuditTrialView(page, pageSize, entity, pk);
>> 			columnLabels = new ArrayList<String>();
>> 			
>> 			if (results != null && results.size() != 0) {
>> 				AuditView view = results.get(0);
>> 				Map<String, AuditProperty> mapProperties = view.getPropertyList();
>> 				Set<String> properties = mapProperties.keySet();
>> 				for (String prop : properties) {
>> 					columnLabels.add(prop);
>> 				}
>> 			}
>> 		} catch (AuditException e) {
>> 			e.printStackTrace();
>> 		} catch (Exception e) {
>> 			e.printStackTrace();
>> 		}
>> 		
>> 		/*
>> 		 * try {
>> 		 * 
>> 		 * results =auditLog.getAuditTrialInfo(page, pageSize); //
>> 		 * request.put("results", results); } catch (AuditException e) { //
>> TODO
>> 		 * Auto-generated catch block e.printStackTrace(); }
>> 		 */
>> 		return SUCCESS;
>> 
>> 	}
>> 
>> 	public void setRequest(Map<String, Object> request) {
>> 		// TODO Auto-generated method stub
>> 		this.request = request;
>> 	}
>> 
>> }
>> 
>> 
>> 
>> @SuppressWarnings("serial")
>> public class AuditView implements Serializable {
>> 	
>> 	private Map<String,AuditProperty> propertyList;// = new
>> ArrayList<AuditProperty>();
>> 
>> 	public Map<String, AuditProperty> getPropertyList() {
>> 		if(propertyList ==null)
>> 		{
>> 			propertyList = new HashMap<String, AuditProperty>();
>> 		}
>> 		return propertyList;
>> 	}
>> 
>> 	public void setPropertyList(Map<String, AuditProperty> propertyList) {
>> 		this.propertyList = propertyList;
>> 	}
>> 
>> }
>> 
>> And AuditProperty bean
>> 
>>  */
>> @SuppressWarnings("serial")
>> public class AuditProperty implements Serializable {
>> 	
>> 	private static final Log logger =
>> LogFactory.getLog(AuditProperty.class);
>> 	private String oldValue;
>> 	private String newValue;
>> 	private boolean updateFlag;
>> 	
>> 	
>> 	
>> 	public boolean isUpdateFlag() {
>> 		return updateFlag;
>> 	}
>> 	public void setUpdateFlag(boolean updateFlag) {
>> 		this.updateFlag = updateFlag;
>> 	}
>> 	public String getOldValue() {		
>> 		return oldValue;
>> 		
>> 	}
>> 	public void setOldValue(String oldValue) {
>> 		this.oldValue = oldValue;
>> 	}
>> 	public String getNewValue() {
>> 		return newValue;
>> 	}
>> 	public void setNewValue(String newValue) {
>> 		this.newValue = newValue;
>> 	}
>> 	public String toString()
>> 	{
>> 		String value= oldValue + " : " + newValue + " : " + updateFlag;
>> 		logger.debug(value);
>> 		return value;
>> 	}
>> 
> 
> 

-- 
View this message in context: http://www.nabble.com/Struts-2-Type-conversion-tp22700624p22713820.html
Sent from the Struts - User mailing list archive at Nabble.com.


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


Re: Struts 2 Type conversion

Posted by mahanare <ma...@gmail.com>.
kind of got a fix.

here is my jsp content.

	<tr>
	<s:iterator value="columnLabels" var="label">
		<th><s:property value='label' /></th>
	</s:iterator>
	</tr>
	<s:iterator value="results" var="auditViewBean" >
	
	<tr>
	 <s:iterator value="propertyList" var="auditProperty">
	  <s:set var="keyName" value="key"></s:set>
	  <s:iterator value="columnLabels" var="label1">
	  
	    <s:if test= "%{#label1== #keyName}" >  	    
		<td><s:property value="value.newValue" /></td>
		</s:if>
</s:iterator>
		</s:iterator>
		
	</tr>
	</s:iterator>




mahanare wrote:
> 
> Hi, I need help in resolving type conversion issue in struts 2.
> 
> Here is my problem definition.
> 
> I have a structs 2 action class called AuditTrailAction.
> Here is the class definition. It contains a List<AuditView> I have given
> my AuditView bean definition below.
> 
> Action contains a List which intern contains a bean containing a Map of
> another bean. 
> 
> I need to display this data into a tabular structure in jsp page. 
> 
> List<AuditView>, each AuditView bean contains Map<Auditproperty> and
> AuditProperty bean contains couple of properties.
> 
> for each AuditView bean in the list, I need to iterate through all the
> AuditProperty beans and display their properties into a row (html table
> row).
> 
> I have been spending time whole day today with no luck. it looks like
> there is some type conversion issue here. I went through
> http://struts.apache.org/2.x/docs/type-conversion.html, but not getting a
> solution for my scenario which looks little complex. 
> 
> Please help me!
> Thanks
> harinath
> 
> 
> 
> public class AuditTrailAction extends ActionSupport implements
> RequestAware {
> 	private List<AuditView> results;
> 	private int pageSize = 20;
> 	private int page;
> 	private AuditLogDao auditLog;
> 	private Map request;
> 	private String entity;
> 	private String pk;
> 	private List<String> columnLabels;
> 
> 	public List<String> getColumnLabels() {
> 		return columnLabels;
> 	}
> 
> 	public void setColumnLabels(List<String> columnLabels) {
> 		this.columnLabels = columnLabels;
> 	}
> 
> 	public int getPage() {
> 		return page;
> 	}
> 
> 	public void setPage(int page) {
> 		this.page = page;
> 	}
> 
> 	public String getEntity() {
> 		return entity;
> 	}
> 
> 	public void setEntity(String entity) {
> 		this.entity = entity;
> 	}
> 
> 	public String getPk() {
> 		return pk;
> 	}
> 
> 	public void setPk(String pk) {
> 		this.pk = pk;
> 	}
> 
> 	public void setAuditLog(AuditLogDao auditLog) {
> 		this.auditLog = auditLog;
> 	}
> 
> 	public List<AuditView> getResults() {
> 		return results;
> 	}
> 
> 	public void setResults(List<AuditView> results) {
> 		this.results = results;
> 	}
> 
> 	public String execute() {
> 		
> 		try {
> 			results = auditLog.getAuditTrialView(page, pageSize, entity, pk);
> 			columnLabels = new ArrayList<String>();
> 			
> 			if (results != null && results.size() != 0) {
> 				AuditView view = results.get(0);
> 				Map<String, AuditProperty> mapProperties = view.getPropertyList();
> 				Set<String> properties = mapProperties.keySet();
> 				for (String prop : properties) {
> 					columnLabels.add(prop);
> 				}
> 			}
> 		} catch (AuditException e) {
> 			e.printStackTrace();
> 		} catch (Exception e) {
> 			e.printStackTrace();
> 		}
> 		
> 		/*
> 		 * try {
> 		 * 
> 		 * results =auditLog.getAuditTrialInfo(page, pageSize); //
> 		 * request.put("results", results); } catch (AuditException e) { // TODO
> 		 * Auto-generated catch block e.printStackTrace(); }
> 		 */
> 		return SUCCESS;
> 
> 	}
> 
> 	public void setRequest(Map<String, Object> request) {
> 		// TODO Auto-generated method stub
> 		this.request = request;
> 	}
> 
> }
> 
> 
> 
> @SuppressWarnings("serial")
> public class AuditView implements Serializable {
> 	
> 	private Map<String,AuditProperty> propertyList;// = new
> ArrayList<AuditProperty>();
> 
> 	public Map<String, AuditProperty> getPropertyList() {
> 		if(propertyList ==null)
> 		{
> 			propertyList = new HashMap<String, AuditProperty>();
> 		}
> 		return propertyList;
> 	}
> 
> 	public void setPropertyList(Map<String, AuditProperty> propertyList) {
> 		this.propertyList = propertyList;
> 	}
> 
> }
> 
> And AuditProperty bean
> 
>  */
> @SuppressWarnings("serial")
> public class AuditProperty implements Serializable {
> 	
> 	private static final Log logger = LogFactory.getLog(AuditProperty.class);
> 	private String oldValue;
> 	private String newValue;
> 	private boolean updateFlag;
> 	
> 	
> 	
> 	public boolean isUpdateFlag() {
> 		return updateFlag;
> 	}
> 	public void setUpdateFlag(boolean updateFlag) {
> 		this.updateFlag = updateFlag;
> 	}
> 	public String getOldValue() {		
> 		return oldValue;
> 		
> 	}
> 	public void setOldValue(String oldValue) {
> 		this.oldValue = oldValue;
> 	}
> 	public String getNewValue() {
> 		return newValue;
> 	}
> 	public void setNewValue(String newValue) {
> 		this.newValue = newValue;
> 	}
> 	public String toString()
> 	{
> 		String value= oldValue + " : " + newValue + " : " + updateFlag;
> 		logger.debug(value);
> 		return value;
> 	}
> 

-- 
View this message in context: http://www.nabble.com/Struts-2-Type-conversion-tp22700624p22703515.html
Sent from the Struts - User mailing list archive at Nabble.com.


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