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没有起作用

解决方案 »

  1.   

    ConfigAction.java里并没有修改ConfigForm 对象configForm的值啊。ConfigForm configForm = (ConfigForm) form;
                    
    Boolean isTrue = new Boolean(true);
    configForm.setIsTrue(isTrue);
    request.setAttribute("configForm ",configForm);
      

  2.   

    假设你的struts-config.xml文件中配置的action中attribute属性为空,否则request.setAttribute("configForm ",configForm);这一句中属性名就写attribute中的名字。
      

  3.   

    Boolean isTrue = new Boolean(true);
    request.setAttribute("isTrue",isTrue);
    在里面存放的是Boolean 对象,当然和你的"true"字符串对象equals不等拉
    改为
    request.setAttribute("isTrue",isTrue.toString());
    再看看
      

  4.   

    request.setAttribute("isTrue",isTrue);
    这行代码是干什么用的?isTrue在哪里用到了?<logic:equal name="configForm" property="isTrue" value="true">configForm表单的isTrue属性什么时候附值的?
    你的JSP,Form,Action的关系是什么样的?
      

  5.   

    不好意思,偶是初学者
    修改了一下代码:
    在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感知到?
      

  6.   

    你的JSP,Form,Action的关系是什么样的?JSP->Action(Form)->JSP从哪个JSP到哪个Action再到哪个JSP?
    如果从 config.jsp 到ConfigAction(ConfigForm),再到其他的JSP,
    那不特殊处理config.jsp里边肯定没有configForm BEAN了
      

  7.   

    关系是这样的:config.jsp->ConfigForm(Action)->config.jsp现在我情况是,我在ConfigAction的show方法中声明了一个String flag
    然后request.setAttribute("flag",flag)
    但是测试时请求show方法后,
    <logic:notPresent name="flag">还是为真...
      

  8.   

    对不起各位大牛了...是我的一个失误,将setAttribute的调用放在了一个if语句后面...
    给分结帖了