论坛首页 Java企业应用论坛

Struts自定义标签中夹杂Struts标签的问题。

浏览 6172 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2005-02-17  
下面是JSP中登陆时 是否显示 验证码的代码,我想去掉<%%>
<%if (SysInfo.getInstance();.getAuthcode(); == 0);{%>
<TR>
	<TD align=right><SPAN class=gen>验证码:</SPAN></TD>
	<TD>
		<html:text property="yzm" size="25" maxlength="25" value=""/> 
		<bonc:webInfo type="authcode"/>(这个是生成验证码随机数的自定义标签);
	</TD>
</TR>
<%}%>

其中<bonc:webInfo type="authcode"/>是自定义标签.相关代码如下:
 if (SysInfo.getInstance();.getAuthcode(); == 0); 
       String  output = "<img src='authimg'>";
ResponseUtils.write(pageContext, output);;            
return (SKIP_BODY);;

为了去掉JSP中的<%%>我修改了<bonc:webInfo type="authcode"/>中的out 为:
 output = "<TR><TD align=right><SPAN class=gen>验证码:</SPAN></TD><TD><html:text property='yzm' size='25' maxlength='25' value=\"\"/> <img src='authimg'></TD></TR>";

JSP 中简化为
<bonc:webInfo type="authcode"/>


但是 问题出现了.就是
<html:text property='yzm' size='25' maxlength='25' value="">
这个标签不能在被执行,而是当作一个字符串.

我想请问有什么办法 实现我想要做的效果么?
   发表时间:2005-02-17  
这个是不应该这样做,你输出的东西是向客户端输出的,已经脱离服务器环境了,不想用&lt;%%&gt;可以用jstl表达式进行替代
0 请登录后投票
   发表时间:2005-02-17  
紧急下潜 写道
这个是不应该这样做,你输出的东西是向客户端输出的,已经脱离服务器环境了,不想用&lt;%%&gt;可以用jstl表达式进行替代


jstl怎么写啊 ?
0 请登录后投票
   发表时间:2005-02-17  
大概是这个样子

&lt;c:if test="${SysInfo.getInstance().getAuthcode() == 0}"&gt;

  &lt;TR&gt;
        &lt;TD align=right&gt;&lt;SPAN class=gen&gt;验证码:&lt;/SPAN&gt;&lt;/TD&gt;
        &lt;TD&gt;
                &lt;html:text property="yzm" size="25" maxlength="25" value=""/&gt;
                <bonc:webInfo type="authcode"/>(这个是生成验证码随机数的自定义标签)
        &lt;/TD&gt;
  &lt;/TR&gt;

&lt;/c:if&gt;
0 请登录后投票
   发表时间:2005-02-17  
紧急下潜 写道
大概是这个样子

<c:if test="${SysInfo.getInstance().getAuthcode() == 0}">

  <TR>
        <TD align=right><SPAN class=gen>验证码:</SPAN></TD>
        <TD>
                <html:text property="yzm" size="25" maxlength="25" value=""/>
                <bonc:webInfo type="authcode"/>(这个是生成验证码随机数的自定义标签)
        </TD>
  </TR>

</c:if>



这么写有什么好处啊? 和 <%%>  一样的思路,  好在哪里啊?

我想这样写,
		 
<logic:notEqual value="2" name="SysInfo" property="authcode">
<TR>
<TD align=right><SPAN class=gen>验证码:</SPAN></TD>
<TD><html:text property="yzm" size="25" maxlength="25" value=""/><bonc:webInfo type="authcode"/></TD>
</TR>
</logic:notEqual>	


但是不知道不知道那个SysInfo这个Bean怎么能找到.以前都是 在action中给他
 
SysInfo sysInfo = SysInfo.getInstance();;
request.setAttribute("SysInfo",sysInfo);;   
 


然后JSP 中那样用才行. 现在我这个JSP 没用action生成.  就是 一个 登陆的前台.那个是判断 是否 显示验证码.  根据    后台 xml文件设置决定 .2表示 不需要验证码.
0 请登录后投票
   发表时间:2005-02-18  
其中<bonc:webInfo type="authcode"/>是自定义标签.相关代码如下: 
 if (SysInfo.getInstance();.getAuthcode(); == 0); 
       String  output = "<img src='authimg'>";
ResponseUtils.write(pageContext, output);;            
return (SKIP_BODY);;

哈,这样不是更简单吗?
String  output = null;
if (SysInfo.getInstance();.getAuthcode(); == 0); 
       output = "<img src='authimg'>";
else
       output  = "";
       
ResponseUtils.write(pageContext, output);;            
return (SKIP_BODY);;
0 请登录后投票
   发表时间:2005-02-19  
紧急下潜 写道
其中<bonc:webInfo type="authcode"/>是自定义标签.相关代码如下: 
 if (SysInfo.getInstance();.getAuthcode(); == 0); 
       String  output = "<img src='authimg'>";
ResponseUtils.write(pageContext, output);;            
return (SKIP_BODY);;

哈,这样不是更简单吗?
String  output = null;
if (SysInfo.getInstance();.getAuthcode(); == 0); 
       output = "<img src='authimg'>";
else
       output  = "";
       
ResponseUtils.write(pageContext, output);;            
return (SKIP_BODY);;


不明白你什么意思 。  else时候做什么  和 我现在的问题 没关系。  问题 是
if成立的时候,strtus标签 怎么 和 自定义标签 结合。
0 请登录后投票
   发表时间:2005-03-12  
你想要达到你要的效果,只能加一个action
如果没有搞错你的意思的话,你的这个页是登录页面,其实登录之前,也可以调用action的
index.jsp只写下面两行

&lt;%@ taglib uri="/tags/struts-logic" prefix="logic" %&gt;
&lt;logic:redirect page="/common/before-login.do"/&gt;

然后在befroe-login对应的action里设置你想要的任何属性
success后转到你目前的登录页面。这样就可以用logic标签。
上面那位给的是用jstl 的做法,应该是一个比较好的方案,如果只想用struts的标签,有时候难免要多写几个action了
如果全用&lt;% %&gt;一个action都可以不写呀,又回到jsp+jdbc 的时代。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics