spring mvc - JSP int values are casted to bool -
i'm working on project in jsp , have problem generated html.
generated html: "1" transformed "oui" (yes in french) , "0" "non" (no in french)
<select id="privilegesrole" name="privileges" multiple="multiple"> <option value="5" selected="selected">role 1</option> <option value="4" selected="selected">role 2</option> <option value="oui" selected="selected">role 3</option> <option value="6" selected="selected">role 4</option> <option value="2" selected="selected">role 5</option> <option value="non" selected="selected">role 6</option> <option value="3" selected="selected">role 7</option> </select> my jsp code:
<form:select path="privileges" multiple="true" id="privilegesrole"> <form:options itemlabel="libelle" itemvalue="id" items="${role.privileges}" /> </form:select> controller: in controller values good
roleadministration role = findby....(); model.addattribute("role", role); thank in advance help
edit: have booleanformatter.java not see used
import org.springframework.format.formatter; import org.springframework.stereotype.component; @component public class booleanformatter implements formatter<boolean> { private string truelabel = utilmessages.getinstance().getstring("common.oui"); private string falselabel = utilmessages.getinstance().getstring("common.non"); @override public string print(boolean arg0, locale arg1) { return arg0 ? truelabel : falselabel; } @override public boolean parse(string arg0, locale arg1) throws parseexception { if (boolean.true.tostring().equals(arg0)) return true; else if (boolean.false.tostring().equals(arg0)) { return false; } else if (truelabel.equals(arg0)) return true; else if (falselabel.equals(arg0)) { return false; } throw new parseexception(arg0, 0); } } we have changed jsp code to:
<form:select id="privilegesrole" path="privileges" multiple="true" > <c:foreach items="${role.privileges}" var="currprivilegeselect"> <option value="<c:out value="${currprivilegeselect.id}"/>" title="<c:out value="${currprivilegeselect.description}"/>"> <c:out value="${currprivilegeselect.libelle}"/> </option> </c:foreach> </form:select> and works, don't know why. if have explication happy read :)
check privileges object inside roleadministration, field id, according spring formatter documentation can associate field either annotation formatted or implement custom format annotation. in case can like
@formatted(booleanformatter.class) or @booleanformatted
both on top of field id inside privileges object.
Comments
Post a Comment