C标签 EL表达式 jsp:include

JSP

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
</head>
<body>

    <p>EL</p>
    ${pics[0].name } ${var1 } 
<!--     既然EL表达式这么简单轻松就能取到值 为什么还要jstl呢? jstl还可以判断 循环
    switch... -->
    <p>JSTL</p>
    <c:if test="${!empty sessionScope.logUser}">
    logUser is not null
    </c:if>
    <c:choose>
        <c:when test="${var2==3}">
    pics length is 3
    </c:when>
        <c:otherwise>
    pics length is not 3
    </c:otherwise>
    </c:choose>
    
<!--     注意st是从0开始的  所以我这里需要+1 -->
    <c:forEach var="iter" items="${picList.files}" step="1" varStatus="st">
        <c:out value="${iter.name }"/>&nbsp;&nbsp;
        <c:out value="${iter.size }"/>&nbsp;&nbsp;
        <c:out value="${st.index+1}"/>/<c:out value="${st.count }"/>
    </c:forEach>
<!--     其实中间还可以简写为 -->
    <c:forEach var="iter" items="${picList.files}" step="1" varStatus="st">
        ${iter.name }&nbsp;&nbsp;
        ${iter.size }&nbsp;&nbsp;
        ${st.index+1}/${st.index+1}
    </c:forEach>
</body>
</html>

 

 

java

package fortest;

import java.util.ArrayList;
import java.util.List;

import org.apache.struts2.ServletActionContext;

import utils.MyUploadPic;
import utils.MyUploadPicList;

import com.opensymphony.xwork2.ActionSupport;

public class TestTags extends ActionSupport{
    public MyUploadPic pics[];
    public MyUploadPicList picList;
    
    
    public MyUploadPic[] getPics() {
        return pics;
    }


    public void setPics(MyUploadPic[] pics) {
        this.pics = pics;
    }


    public MyUploadPicList getPicList() {
        return picList;
    }


    public void setPicList(MyUploadPicList picList) {
        this.picList = picList;
    }


    public String execute(){
        System.out.println("test tag");
        MyUploadPic pic1=new MyUploadPic();
        pic1.setName("pic1");
        pic1.setSize(3484);
        MyUploadPic pic2=new MyUploadPic();
        pic2.setName("pic2");
        pic2.setSize(2222);
        
        MyUploadPic pic3=new MyUploadPic();
        pic3.setName("pci3");
        pic3.setSize(837434);
        pics=new MyUploadPic[3];
        pics[0]=pic1;
        pics[1]=pic2;
        pics[2]=pic3;
        List<MyUploadPic> list=new ArrayList<MyUploadPic>();
        list.add(pic3);
        list.add(pic2);
        list.add(pic1);
        picList=new MyUploadPicList();
        picList.setFiles(list);//MyUploadPicList这个类中有一个属性是List型的
        
        // 对于一些简单的值  可以放在request中
        ServletActionContext.getRequest().setAttribute("var1", "value1");
        ServletActionContext.getRequest().setAttribute("var2", 3);
        ServletActionContext.getRequest().getSession().setAttribute("logUser", null);
        
        return "success";
    }
}

 接下来是更重要的部分 

后台向jsp传送了一个attribute名字为abc的对象  那么在include 的jsp页面中  可以直接使用${abc.xxx}嘛? 可以!

如果这个include的页面是在c标签的forEach循环中呢?  不能直接使用  但是使用下面的办法

http://stackoverflow.com/questions/7799716/passing-cforeach-variable-to-a-jspinclude

也就是

<c:forEach items="${cart.entries}" var="entry">
<c:set var="entryFC" value="${entry}" scope="request"></c:set>
 <jsp:include page="helper.jsp"></jsp:include>
</c:forEach>

那么helper页面就用entryFC.xxx     当然这个entryFC还是可以用entry这个名字的   只不过原作者的意思应该是表示区分以防混淆

C标签 EL表达式 jsp:include,古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。