JQERY

来源:互联网 发布:董洁潘粤明 知乎 编辑:程序博客网 时间:2024/05/09 12:29
<s:if test="{#flag=='result'}">
<font color="red">以下是你搜索的结果:</font>
</s:if>
<s:if test="{#flag=='notfind'}">
<font color="red">对不起没有找到你要搜索的结果:</font>

<s:if test='%{flag=="result"}'>归还单</s:if>
<s:if test='%{flag=="notfind"}'>e归还单</s:if>
  </s:if>

<s:if test="%{#art.articleTitle.length()>6}">
${fn:substring(art.articleTitle,0,15)}
      </s:if>

<s:if test="deptType==1" >下属 </s:if>如果你的数据库对应的字段类型为整形,可以这样使用;

<s:if test="deptType=='1'" >下属 </s:if>如果你的数据库对应的字段类型为char,可以这样使用;

<s:if test="deptType=='aa'" >下属 </s:if>如果你的数据库对应的字段类型为varchar,并且数据库中的字符串都是多余一个字符的字符串,可以这样使用;

<s:if test="deptType==\"1\"" >下属 </s:if> <s:else>直属 </s:else>(测试通过,这样用是最正确的)
这个写的好,收藏

  for (int i = {pageBean.currentPage}; i <= ({pageBean.totalPage}<({pageBean.currentPage}+9)?{pageBean.totalPage}:({pageBean.currentPage}+9)); i++) <%{ %>
out.println("<a href=${pageBean.requestURL}?page=" + i+ ">[" + i + "]</a>");<%}%>

引言:今天自己做一个B2C的小项目前端页面展示用到strut2标签,期间遇到一些小的问题,在网上查找,现总结如下:
1、 s:set标签

格式:<s:set name="" value="" scope=””/>

说明:把jsp页面中的一个值,以name存储起来。Scope存储的范围是在application、session、request、page……。默认是存储在该action中。

用法①:<s:set name="miloList" value="{‘java’,’php’,’C#’}"/>

这个值是一个list容器,迭代使用s:iterator标签,Notice:list、set容器不加”#”,map要加”#”;

用法②:<s:set name="miloNum" value="24"/>

Notice:这个是整形,如果value的值是int或long类型,那么就要在输出的时候加#,把它当作字符串输出,默认是以字符串输出.

输出:<s:property value="#miloNum"/>

那么如果value是字符串呢?

<s:set name="miloStr" value="’24’"/>

Notice:这个是字符串,value中的字符串要加上单引号(‘),这样才说明是字符串。

输出:<s:property value="miloStr"/>

用法③:用scope属性说明存储范围

request:<s:set name="miloVal" value="'24'" scope="request"/>

输出:<s:property value="#request.miloVal"/>

session:<s:set name="miloVal" value="'24'" scope="session"/>

      输出:<s:property value="#session.miloVal"/>

page:<s:set name="miloVal" value="'24'" scope="page"/>

输出:<s:property value="#attr.minVal"/>

Notice:attr.***默认是从 page, request, session, then application scopes



2、 s:if标签

对于s:if标签的用法,我这里不做具体的说明,因为在网上都能查找到,而且在前面的Struts2 -- s:if标签的使用,中已经说明过了,这里我只说明一下我在项目实践中遇到的问题,如下:

①     假设在request中有个checkStatus属性(这里表示为审批状态),有这样一个需求,如果checkStatus的值为’00’表示未审批,’01’表示已审批,那么根据checkStatus的值,在页面上显示未审批或已审批。

我的页面代码如下:

<s:if test="#request.checkStatus == ‘00’"/>未审批</s:if>

<s:else>已审批</s:else>

按理说,这样应该能达到要求,但是结果往往不能如你所愿,我用了很多的表达式方法,都没能成功,最后我在Action处理checkStatus,将其转换为中文,然后直接在页面上输出,从中得到启示,原因是因为我的checkStatus的值是从数据库中取出来的,而在数据库中 checkStatus的类型为Char(6),在数据库里面有这样的规定如果是char型,那么你定义的长度是多长就是多长,所以我在页面上用#request.checkStatus的长度也应该是6,而’00’的长度显然为2,这两个值显然不相等,因此此问题的解决方法为:

法①在Action处理checkStatus用String的trim()方法;

法②修改数据库字段为varChar类型;

但个人认为,对于某个代码表示某些值如:’00’表示:否,’01’表示:是,应该建立一个分类代码表,在数据库中统一管理。


<s:if test='%{pageBean.currentPage==1}'>
<s:set name="index" value="0" />
</s:if>
<s:else>
<s:set name="index" value="pageBean.currentPage*10" />
</s:else>
当取这个值时要加#例如<s:properyy value="#value">
___________________________
window.opener 的用法

window.opener 返回的是创建当前窗口的那个父窗口的引用,比如点击了a.htm上的一个链接而打开了b.htm,然后我们打算在b.htm上输入一个值然后赋予a.htm上的一个id为“name”的textbox中,就可以写为:


window.opener.document.getElementById("name").value = "输入的数据";

对于javascript中的window.opener没有很好的理解。
为什么框架中不能使用,弹出窗口的父窗口不能在框架里面的某个页面呢?那怎样通过弹出窗口操作框架中的父窗口呢?
__________________________________________________________________关于Struts2中的标签介绍(二) 收藏

         6、<s:fielderror/>
        该标签主要用于在页面上输出在Action中设置的FieldError信息。用法如下所示:
//TestStruts2Tag.java
import com.opensymphony.xwork2.ActionSupport;
public class TestStruts2Tag extends ActionSupport {
    @Override
    public String execute() throws Exception {
        // TODO Auto-generated method stub
        return  SUCCESS;
    }

    @Override
    public void validate() {
        // TODO Auto-generated method stub
        this.addActionError("actionError!");
        this.addActionMessage("actionMessage!");
        this.addFieldError("field", "fieldError");
        this.addFieldError("field2", "fieldError2");
    }
}
//index.jsp部分代码
<s:fielderror/>
   <s:fielderror>
           <s:param>field</s:param>
           <s:param>field2</s:param>
   </s:fielderror>
//struts.xml
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>
    <include file="struts-default.xml"/>
    <package name="TestStruts2Tag" extends="struts-default">
        <action name="testTag" class="TestStruts2Tag">
            <result name="success">/index.jsp</result>
            <result name="input">/index.jsp</result>
        </action>
    </package>
</struts>

        注:<s:fielderror />用于输出所有FieldError信息。
                <s:fielderror>
          <s:param>field</s:param>
          <s:param>field2</s:param>
      </s:fielderror>
                或
                <s:fielderror>
             <s:param value="%{'field'}" />
             <s:param value="%{'field2'}" />
       </s:fielderror>
                用于输出"field"和"field2"的信息。
            7、<s:actionerror/>
_____________________________________________________________
ddActionError("出错信息");
页面用 <s:actionerror />输出,struts.xml中 <result name="input">/jsp页面 </result>记得input一定要配置

给你一个登录的例子希望对你有帮助,
package com.teastusystem.struts.action;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.teastusystem.models.Admin;
import com.teastusystem.models.Teacher;
import com.teastusystem.models.Student;
import java.util.*;
import com.teastusystem.struts.action.BaseAction;

public class LoginAction extends BaseAction {

private static final long serialVersionUID = 1L;

private String username;

private String password;

public String execute() throws Exception {
Map session = ActionContext.getContext().getSession();
Admin admin = admintarget.adminLogin(username, password);
if (admin != null) {
return SUCCESS;
} else {
addActionError("用户名/密码不匹配");
return "error";
}
}

public String getPassword() {
return password;
}

public void setPassword(String password) {
this.password = password;
}

public String getUsername() {
return username;
}

public void setUsername(String username) {
this.username = username;
}

}
login.jsp
<%@ page contentType="text/html; charset=GBK"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<html>
<head>
<title>login </title>
</head>
<body>
<center>
<hr>
<table>
<tr>
<td>
<s:actionerror />
<s:form action="login">
<s:textfield name="username" label="用户名" />
<s:password name="password" label="密码" />
<s:submit value="登录" />
</s:form>
</td>
</tr>
</table>
</center>
<hr>
</body>
</html>

________________________________________________________________
表单的重复提交。

具体重定向就不多说了,下面简单说一下<s:token/>怎么使用
第一步:
struts.xml文件中配置拦截器,可以针对包,也可以针对action
<package name="TestStruts" extends="struts-default">  
    <interceptors>  
    <interceptor-stack name="myStack">  
        <interceptor-ref name="token"/>  
        <interceptor-ref name="token-session"/>  
    <interceptor-ref name="defaultStack" />               
    </interceptor-stack>  
    </interceptors>  
    <default-interceptor-ref name="myStack" />  
    <action name="login" class="com.sun.demo.LoginAction">  
        <result name="input">/login.jsp</result>  
        <result name="invalid.token">/exception.jsp</result>  
    </action>  
或者针对某个action:

<action name="login" class="com.sun.demo.LoginAction">  
    <interceptor-ref name="token" />  
    <interceptor-ref name="token-session" />  
    <interceptor-ref name="defaultStack" />  
    <result name="input">/login.jsp</result>  
    <result name="invalid.token">/exception.jsp</result>   
</action>  
jsp页面中使用如下:

<form action="login.action">
<s:token></s:token>
<input type="submit">
</form>

若执行了重复提交会返回invalid.token,即前边配置的/exception.jsp

具体的方法还有多种,这里只提供两种思路,当然,也盼望大家有更多的思路~~

<action name="*Article" class="com.action.ArticleAction" method="{1}Article">
<result>/fckeditor/new_article.jsp</result>
<result name="input">/fckeditor/new_article.jsp</result>
<result name="invalid.token">/fckeditor/new_article.jsp</result>
<interceptor-ref name="token"/>
<interceptor-ref name="defaultStack"/>
</action>

注意以上配置文件加入了“token”拦截器和“invalid.token”结果,因为“token”拦截器在会话token与请求token不一致时,将会直接返回“invalid.token”结果。

要想替换重复提交后的struts2的默认提示信息, 找到struts2-core.jar下面的struts-message].properties文件,里面存放了一些错误默认的提示信息,如下:

struts.messages.invalid.token=The form has already been processed or no token was supplied, please try again.
struts.internal.invalid.token=Form token {0} does not match the session token {1}.

struts.messages.bypass.request=Bypassing {0}/{1}
struts.messages.current.file=File {0} {1} {2} {3}
struts.messages.invalid.file=Could not find a Filename for {0}. Verify that a valid file was submitted.
struts.messages.invalid.content.type=Could not find a Content-Type for {0}. Verify that a valid file was submitted.
struts.messages.removing.file=Removing file {0} {1}
struts.messages.error.uploading=Error uploading: {0}
struts.messages.error.file.too.large=File too large: {0} "{1}" "{2}" {3}
struts.messages.error.content.type.not.allowed=Content-Type not allowed: {0} "{1}" "{2}" {3}
struts.messages.error.file.extension.not.allowed=File extension not allowed: {0} "{1}" "{2}" {3}

devmode.notification=Developer Notification (set struts.devMode to false to disable this message):\n{0}

建立资源文件,配置struts.custom.i18n.resources常量到指定的国际化资源文件中,

在这个国际化资源文件中配置struts.messages.invalid.token=XXX(XXX)为你自己想要的提示信息.这样当重复提交表单的时间就会显示出XXX提示信息!
struts.messages.invalid.token
struts.internal.invalid.token

会自己动在actionerror中显示出提示重复的信息,

提交时只能放在提交的ACTION里面,。不能放在提交前进入这个页面的ACTION里面。
____________________________________________
var t=$("#title").val();取得FORM表单中NAME为TITLE的值
    var oEditor = FCKeditorAPI.GetInstance("content");
    var c=oEditor.GetXHTML(true);取得FCK的值

var tp=$("#a_t").val();

t=trim(t);去除空格
c=trim(c);

if(t==null||t.length>20||t.length<1){
showError("标题长度不正确");return false;
}

function showError(data){
$(".error").text(data).css("color","red").fadeIn("fast").fadeOut(3000);
}
把DIV为ERROR的输出内容为DATE

____________________________________________________________
$("div."+showDiv).slideToggle("fast");
var html=$("a."+ahtml);
if(html.html=="[&nbsp;收&nbsp;起&nbsp;]"){
html.html("[&nbsp;展&nbsp;开&nbsp;]");
}else{
html.html("[&nbsp;收&nbsp;起&nbsp;]");
}
把DIV为SHOWDIV隐藏,同时设定CLASS 为AHTML的链接<A>的内容为展开或者收起,slideToggle参数:FAST.SLOW


___________________________________________________
<script type="text/javascript"></script><script src="http://hi.images.csdn.net/js/blog/feedback.js?v=2009060902" type="text/javascript"></script>
struts Iterator status:

    1:#status.odd 是否奇数行

    2:#status.count 当前行数

    3:#status.index 当前行的序号,从0开始『#status.count=#status.index+1』

    4:#status.first 是否第一行

    5:#status.last 是否最后一行

    6:#status.modules(int) 当前行数取模
原创粉丝点击