user1175169
user1175169

Reputation: 13

struts 2 s:date tag with value from variable in request with it's name in request

I have a problem in my web app with struts 2 and a date value. I've got a form and inside it an s:textfield that shows a date value. I read this value from request, and the problem is that the name of that value is in other variable.

The Action I'm calling does this:

...   
public String execute(){ return SUCCESS;}

public MyObject getObject1(){   
  MyObject result = new MyObject();  
  result.setDate(new java.util.Date());  
  return result;  
}  
...

On SUCCESS it goes to my form.

The code in my form (what I was wondering to write) is:

<s:form action="save">
  <s:set name="objName" value="object1"></s:set>  
  <jsp:include page="../includedform.jsp"></jsp:include>  
</s:form>

And in the "includedform.jsp" there is:

<s:textfield name="%{objName}.date" label="Date" >  
  <s:param name="value">  
    <s:date name="%{%{objName}.date}" format="dd/MM/yyyy" />  
  </s:param>  
</s:textfield>

The syntax: %{%{objName}.anagrafica.dataNascita}
doesn't work (it shows nothing, obviously). So i'll need something like this but working :)

Other tags s:textfield inside "includedform.jsp" (ommited in the code bellow for simplicity) without date fields are working, because I am using only the name attribute and struts looks automatically for the value. This is the code I use for these textfields:

<s:textfield name="%{objName}.name" label="Name"/>

Upvotes: 1

Views: 4806

Answers (2)

user4452436
user4452436

Reputation:

There is one solution which i tried and it worked :)
1)Keep the column in which you want to store date in database's table in "DATE" data type only.
2)Use only Textfield tag in JSP page.Dont use Date tag. Note:Make sure that you make user input date in YYYY-MM-DD format only by placing a placeholder in textfield tag !
3)Keep the variable for accessing that field of string type only.Dont use DATE data type.
4)Now run Query: Select DATE_FORMAT(datecolumnname,'%d/%m%/Y') as date_two from tablename; and you will get date from that columnin dd/mm/yyyy format even if it is stored in YYYY-MM-DD format in table .
5)And you can also compare your datecolumn's data with curdate() and related functions as well and it works :) .
6)Like i used query: Select id,name,DATE_FORMAT(datecolumnname,'%d/%m/%Y') as datecolumn2 from tablename where datecolumnname >= curdate();

Upvotes: 0

Umesh Awasthi
Umesh Awasthi

Reputation: 23587

your question is very confusing and you need to rephrase to make it more clear and readable. i am not sure why you are doing this

<s:textfield name="%{objName}.date" label="Date" >

while this can be done like

<s:textfield name="objName.date" label="Date" > OR 
<s:textfield name="%{objName.date}" label="Date" >

when you write objName.date OGNL assume that you have a bean in your action class namely objName and this bean has property namely date, s ultimately this will get converted to

getObjName().getDate() by ONGL

On a similar fashion <s:date name="%{%{objName}.date}" format="dd/MM/yyyy" /> datee tag works For more details please refer to the official doc

Upvotes: 1

Related Questions