struts标签的一个问题:关于logic:equal不起作用?

lobatt 2006-04-20 10:39:01
我在jsp中使用了一个logic:equal标签
<logic:equal name="configForm" property="isTrue" value="true">
do some thing...
</logic:equal>

同时在与之对应的ConfigForm中声明了一个boolean变量 isTrue,
并在ConfigAction中用request.setAttribute方法来设置了isTrue的值
但是这个标签仿佛还是没有起作用

可能是什么问题?那位大侠指点一个调试的方法也行啊
...全文
485 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
yinj 2006-04-20
  • 打赏
  • 举报
回复
request.setAttribute("isTrue",isTrue);
这行代码是干什么用的?isTrue在哪里用到了?

<logic:equal name="configForm" property="isTrue" value="true">

configForm表单的isTrue属性什么时候附值的?
你的JSP,Form,Action的关系是什么样的?
Marcus-Z 2006-04-20
  • 打赏
  • 举报
回复
Boolean isTrue = new Boolean(true);
request.setAttribute("isTrue",isTrue);
在里面存放的是Boolean 对象,当然和你的"true"字符串对象equals不等拉
改为
request.setAttribute("isTrue",isTrue.toString());
再看看
yanransoft 2006-04-20
  • 打赏
  • 举报
回复
假设你的struts-config.xml文件中配置的action中attribute属性为空,否则request.setAttribute("configForm ",configForm);这一句中属性名就写attribute中的名字。
yanransoft 2006-04-20
  • 打赏
  • 举报
回复
ConfigAction.java里并没有修改ConfigForm 对象configForm的值啊。

ConfigForm configForm = (ConfigForm) form;

Boolean isTrue = new Boolean(true);
configForm.setIsTrue(isTrue);
request.setAttribute("configForm ",configForm);
lobatt 2006-04-20
  • 打赏
  • 举报
回复
config.jsp
=====================================================================

<%@ page contentType="text/html; charset=UTF-8"%>
<%@page isELIgnored="false"%>
<%@ include file="/inc/taglibs.jsp"%>

html>
<head>
<title>test</title>
</head>

<body>
<logic:equal name="configForm" property="isTrue" value="true">
<TABLE>
<tr>
<td height="20" colspan="2"> <p align="left"> <strong>选择用户名:</strong> </p> </td>
</tr>
</TABLE>
</logic:equal>
</body></html>
====================================================

ConfigAction.java
====================================================
public class ConfigAction extends DispatchAction {

// --------------------------------------------------------- Instance Variables

// --------------------------------------------------------- Methods

public ActionForward show(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response) {

ConfigForm configForm = (ConfigForm) form;

Boolean isTrue = new Boolean(true);
request.setAttribute("isTrue",isTrue);


return mapping.getInputForward();
}
}
============================================
ConfigForm.java
=============================================
public class ConfigForm extends ActionForm {
private boolean isTrue;
public boolean getIsTrue() {
return isTrue;
}

public void setIsTrue(Boolean isTrue) {
this.isTrue = isTrue.booleanValue();
}
}
=======================================================

因为是在原有代码上改动,所以config文件是没有问题的,但是就是setAttribute没有起作用
Marcus-Z 2006-04-20
  • 打赏
  • 举报
回复
贴代码
lobatt 2006-04-20
  • 打赏
  • 举报
回复
对不起各位大牛了...是我的一个失误,将setAttribute的调用放在了一个if语句后面...
给分结帖了
lobatt 2006-04-20
  • 打赏
  • 举报
回复
另外,flag是经过了初始化的
lobatt 2006-04-20
  • 打赏
  • 举报
回复
关系是这样的:config.jsp->ConfigForm(Action)->config.jsp

现在我情况是,我在ConfigAction的show方法中声明了一个String flag
然后request.setAttribute("flag",flag)
但是测试时请求show方法后,
<logic:notPresent name="flag">还是为真...
yinj 2006-04-20
  • 打赏
  • 举报
回复
你的JSP,Form,Action的关系是什么样的?

JSP->Action(Form)->JSP

从哪个JSP到哪个Action再到哪个JSP?
如果从 config.jsp 到ConfigAction(ConfigForm),再到其他的JSP,
那不特殊处理config.jsp里边肯定没有configForm BEAN了。。。
lobatt 2006-04-20
  • 打赏
  • 举报
回复
不好意思,偶是初学者
修改了一下代码:
在ConfigAction中添加: configForm.setIsTrue("1")
另外吧,ConfigForm中的isTrue属性改为了String型
这样我用
<logic:equal name="configForm" property="isTrue" value="1">
来做判断
现在的问题是,jsp根本找不到isTrue这个属性
因为我测试的时候用
<logic:notPresent name="configForm" property="isTrue">
来判断的时候结果为真...
我看书上是在pageContext里设置javabean
是不是对应的FormBean还需要其他的一些配置才能被jsp感知到?

67,549

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧