struts-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Yasser Zamani <yasser.zam...@live.com>
Subject Re: Iusse in BigDecimal conversion after upgrading from 2.5.10.1 to 2.5.13
Date Wed, 04 Oct 2017 06:59:06 GMT


On 10/4/2017 9:19 AM, sreekanth wrote:
> thanks Yasser, that info was great, so do you think so the way struts2 binds
> BigDecimal changed between these two versions ?

I found the difference at [1]. That is in order to fix WW-4581 [2].

[1] 
https://gitbox.apache.org/repos/asf?p=struts.git;a=commitdiff;h=f874f9cde56f74c5161b17e645f779805c51a04b
[2] https://issues.apache.org/jira/browse/WW-4581

>  and also if possible kindly
> share your sample project in github so that i can fork it and check myself
> faster.
> 

My sample is inside a big project like a big Struts lab ;) but the 
config is simple as below:

```java
package me.zamani.yasser.ww_convention.actions;

import java.math.BigDecimal;

/**
  * Created by user on 10/3/2017.
  */
public class A {
         public String getStrVal() {
             return strVal;
         }

         public void setStrVal(String strVal) {
             this.strVal = strVal;
         }

         public BigDecimal getDrAmt() {
             return drAmt;
         }

         public void setDrAmt(BigDecimal drAmt) {
             this.drAmt = drAmt;
         }

         public BigDecimal getCrAmt() {
             return crAmt;
         }

         public void setCrAmt(BigDecimal crAmt) {
             this.crAmt = crAmt;
         }

         String strVal;
         BigDecimal drAmt;
         BigDecimal crAmt;
     }
```

```java
package me.zamani.yasser.ww_convention.actions;

import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionSupport;
import org.apache.struts2.convention.annotation.InterceptorRef;
import org.apache.struts2.convention.annotation.Result;
import org.apache.struts2.convention.annotation.Results;

import java.lang.reflect.Field;
import java.math.BigDecimal;
import java.text.NumberFormat;
import java.util.ArrayList;
import java.util.List;

@Results({
         @Result(name = Action.SUCCESS, location = 
"/WEB-INF/content/myBigDecimalList.jsp"/*, type = "freemarker"*/)
})
public class MyBigDecimalList extends ActionSupport {

     public List<A> getMyList() {
         return myList;
     }

     public void setMyList(List<A> myList) {
         this.myList = myList;
     }

     private List<A> myList;

 
@org.apache.struts2.convention.annotation.Action(value="myBigDecimalList")
     public String execute() throws Exception {
         A a = new A();
         a.setStrVal("my str val");
         a.setCrAmt(new 
BigDecimal("0.01000000000000000020816681711721685132943093776702880859375"));
         a.setDrAmt(new 
BigDecimal("0.02000000000000000020816681711721685132943093776702880859375"));
         myList=new ArrayList<>();
         myList.add(a);
         NumberFormat format = NumberFormat.getNumberInstance(getLocale());
         //NumberFormat.set
         format.setMaximumFractionDigits(40);
         return Action.SUCCESS;
     }
}

```

```jsp
<%@taglib prefix="s" uri="/struts-tags"%>
<%--
   Created by IntelliJ IDEA.
   User: user
   Date: 8/18/2017
   Time: 12:36 AM
   To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
     <title>AdvancedWildcardAction1</title>
</head>
<body>
<s:form action="myBigDecimalList">
<s:hidden name='myList[0].strVal'/>
<s:hidden name='myList[0].drAmt'/>
<s:hidden name='myList[0].crAmt'/>
     <s:submit/>
</s:form>
</body>
</html>
```

Hope these help!
Yasser.

> 
> 
> --
> Sent from: http://struts.1045723.n5.nabble.com/Struts-User-f3426046.html
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
> For additional commands, e-mail: user-help@struts.apache.org
> 
Mime
View raw message