java.lang.ClassCastException: java.lang.Boolean нельзя привести к java.lang.String в логике Struts: равный тег
У меня есть ошибка, когда я хочу получить доступ к моей странице JSP.Мой боб:
public class BeChildren implements Serializable
{
...
private String isFilledChildren;
....
/**
* @param isFilledChildrenthe isFilledChildrento set
*/
public void setIsFilledChildren( String isFilledChildren)
{
this.isFilledChildren= isFilledChildren;
}
public String getIsFilledChildren( )
{
if ( getNom( ) != null )
{
return "true";
} else
{
return "false";
}
}
...
}
Ошибка:
28/07/17-09:13:10,670 ERROR org.apache.struts.taglib.tiles.InsertTag - ServletException in '/pages/sub/dir/detail/body.jsp': javax.servlet.jsp.JspException: Invalid argument looking up property: "bean.enfant.isFilledChildren" of bean: "sub/dir/detail"
org.apache.jasper.JasperException: javax.servlet.ServletException: javax.servlet.jsp.JspException: Invalid argument looking up property: "bean.enfant.isFilledChildren" of bean: "sub/dir/detail"
javax.servlet.jsp.JspException: Invalid argument looking up property: "bean.children.isFilledChildren" of bean: "sub/dir/detail"
java.lang.ClassCastException: java.lang.Boolean cannot be cast to java.lang.String
Мой JSP:
...
<html:form action="/page/sub/dir/detail.do">
<html:hidden name="sub/dir/detail" property="modeCreation" styleId="modeCreation"/>
<html:hidden name="sub/dir/detail" property="bean.enfant.isFilledChildren"/>
....
<logic:equal name="sub/dir/detail" property="bean.enfant.isFilledChildren" value="true">
.....
</logic:equal>
...
<script language="javascript" type="text/javascript">
var f = document.forms[0];
function init(){
var isFilledChildren = document.forms[0].elements["bean.enfant.isFilledChildren"];
....
if (isFilledChildren!=null && "true"==isFilledChildren.value){
...
}
}
....
Что случилось?
3 ответа
Изменение типа свойства isFilledChildren на String решит эту проблему.
Если это не так, попробуйте с <logic:match />
а также <logic:notMatch />
(если это возможно в этом случае использования). См. Ниже для логики: соответствовать образец кода "
<logic:match name="UserForm" property="favouriteFood" value="Pizza">
Свойство типа String должно использовать строковое значение, чтобы избежать ClassCastException
,
<logic:equal name="sub/dir/detail" property="bean.enfant.isFilledChildren" value="'true'">
Ошибка в том, что вы передаете логическое значение свойству isFilledChildren в качестве параметра
<logic:equal name="sub/dir/detail" property="bean.enfant.isFilledChildren" value="true">
В вашем бине свойство принимает строковое значение