开发者社区> 问答> 正文

jfinal 与JSP的传值问题?报错

发起代码:

==========================================

function showchart(value,text){
  var mkid='<%=id%>';
  var sheetid='<%=sheetid%>';
  $.get("chart/ChartShow",{"flag":'new',"value":value,"text":text,"mkid":mkid,"sheetid":sheetid},
  function (e){
  window.open("./echart/echartmain.jsp");  
  //打开在线曲线
 
 
  });
  
  }


========================================

后端代码

=========================================

public class chartControlle extends Controller{
public void index(){
System.out.println("The is My new jfinal WEB APP");
renderText("");
}

public void ChartShow(){
String flag=getPara("flag");
//提交查询(最新曲线,静态)
    if (flag.equals("new")){
            String value=getPara("value");//字段名
            String text=getPara("text");//曲线名称
            String mkid=getPara("mkid");
            String sheetid=getPara("sheetid");
            this.setAttr("chart_name",text);
            setAttr("chart_nowdata","ddd");
            System.out.println("chart_name="+getAttr("chart_name"));
    }
this.setAttr("chart_name",flag);
render("/echart/echartmain.jsp");
}

}

===============================================

前端代码

================================================

<%@ page language="java" import="java.util.*,bbsys_base.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";


%>


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base>     
    <title>在线曲线</title>
    
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">    
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css"> -->


  </head>

<div>
  ${chart_name}
  </div>  
  </body>
 
</html>

============================================================
问题:



  1. 前端代码中为什么该值( ${chart_name})没有输出 ?
  2. 后端代码中的的render("/echart/echartmain.jsp");能否省略?我看DEMO中好像有省的,但是我自行删除就报错了
  3. setAttr的作用范围是多少?是不是该项目的所有JSP页面中都可以调用?作用时间是多少?
  4. 我该如何去查询setAttr是否已传到JSP中呢?


展开
收起
爱吃鱼的程序员 2020-06-10 14:32:21 678 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    1:是否设置了ViewType为JSP?因为jfinal默认类型为freemarker,所以使用jsp时需要这样设置一下:me.setViewType(ViewType.JSP)

    2:render(view)方法可以省略,只需要满足这个规则即可:view=viewPath+methodName+".jsp"

    3:setAttr在底层仅仅就是调用了一下HttpServletRequest.setAttribute(key,value),而在jsp中是可以直接使用内置的request对象的,也即在jsp中页面中可以随意使用request.getAttribute(...)获取在action中setAttr(...)过来的数据。setAttr的作用范围是本次request、reponse这一个回合

    4:只要是通过setAttr(...),并且没有在后续调用过removeAttr(...)即必定传到了jsp页面之中

      前面两点在jfinal用户手册中有详细的说明,建议先仔细看一遍手册再进行开发,少走很多弯路,手册仅30页左右,并且绝大分部是代码实例和图示,一个小时能看完,在此下载手册: http://www.jfinal.com

    1、已经设置成jsp视图2、如果省略的话,具体要怎么写?3、现在还是么有值,该怎么排除4、手册看了,野路子,有没有进阶的教程、书籍介绍?5、感谢您的回复![13]
    2020-06-10 14:32:37
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载