<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Java軟件報表軟件技術博客

    java報表軟件技術匯總 java報表軟件制作 報表軟件新聞
    posts - 355, comments - 100, trackbacks - 0, articles - 3
       :: 首頁 :: 新隨筆 ::  :: 聚合  :: 管理

    1. 問題描述

    在報表開發工具FineReport中,若有幾張不同的報表,每張報表都有一個共同的項可以選擇,比如日期時間。我們希望選擇了第一張報表的時間之后,其他報表的默認時間都變為第一張報表選擇的時間,此時要如何實現呢?

    2. 實現思路

    可以利用給session賦值來實現。給第一張報表的參數控件增加通過ajax的url將值傳遞給后臺的servlet的編輯后事件,servlet獲取ajax傳遞的值并將其保存到session中,后面的報表在參數的控件值處通獲取session值即可。

    3. 實現步驟

    3.1 Ajax傳值設置

    隨便打開一張帶參數的模版,如打開模版:%FR_HOME%\WebReport\WEB-INF\reportlets\doc\Primary\Parameter\Parameter.cpt。

    點擊參數界面,將控件設置未文本框控件,給文本框控件增加編輯后事件,具體的js如下:

    1.var str=this.getValue();    //獲取當前控件的值  
    2.FR.ajax({    
    3.   url: "servlet/session?id="+FR.cjkEncode(str),   //將值傳遞給session這個servlet中  
    });
    

    注:如果想要預覽報表的同時將數據也寫入到session中,而不需要異步加載,可以再ajax下面加上async:false。

    3.2 獲取值并保存至Session

    新建一個名為session的類,具體的代碼如下:

    1.import javax.servlet.http.HttpSession;      
    2.import java.io.IOException;      
    3.import java.io.PrintWriter;      
    4.import java.util.ResourceBundle;      
    5.import java.lang.String;      
    6.import javax.servlet.ServletException;      
    7.import javax.servlet.http.HttpServlet;      
    8.import javax.servlet.http.HttpServletRequest;      
    9.import javax.servlet.http.HttpServletResponse;      
    10.  
    11.import com.fr.stable.CodeUtils;  
    12.import com.fr.web.utils.WebUtils;  
    13.      
    14.public class session extends HttpServlet {      
    15.    public void doGet(HttpServletRequest request,      
    16.                      HttpServletResponse response)      
    17.        throws IOException, ServletException      
    18.    {      
    19.     response.setContentType("text/html; charset=gb2312");      
    20.      
    21.     PrintWriter out = response.getWriter();      
    22.     out.println("<html>");      
    23.     out.println("<body>");      
    24.     String urlid=request.getParameter("id");  //獲取url通過ajax傳遞的值      
    25.     HttpSession session=request.getSession(true);      
    26.     if(urlid==""||urlid==null){      
    27.     out.print("<form action=\"");      
    28.     out.print("session\" ");      
    29.     out.println("method=POST>");      
    30.     out.println("set session:<input type=text name=sessionvalue>");      
    31.     out.println("<input type=submit name=bbb value=tijiao>");      
    32.     out.println("</form>");         
    33.     if(request.getParameter("sessionvalue")!=null&&request.getParameter("sessionvalue")!=""){      
    34.     session.setAttribute("sessionname", request.getParameter("sessionvalue"));      
    35.     }      
    36.     }      
    37.     else{      
    38.         urlid = CodeUtils.decodeText(urlid);  
    39.         session.setAttribute("sessionname",urlid);  //將值賦值給sessionname這個session中      
    40.        out.println("<script language='javascript'>window.close();</script>");      
    41.     }      
    42.     out.println("</body>");      
    43.     out.println("</html>");      
    44.    }        
    45.    public void doPost(HttpServletRequest request,      
    46.                      HttpServletResponse response)      
    47.        throws IOException, ServletException      
    48.    {      
    49.        doGet(request, response);      
    50.    }              
    51.}  
    

    編譯session.java類,將編譯好的session.class放置在%FR _HOME%\WebReport\WEB-INF\classes目錄下。

    3.3 配置訪問session賦值的Servlet

    打開%FR _HOME%\WebReport\WEB-INF\下的web.xml,加入如下代碼:

    1.<servlet>  
    2.    <servlet-name>session</servlet-name>  
    3.    <servlet-class>session</servlet-class>  
    4.  </servlet>    
    5.    
    6.  <servlet-mapping>  
    7.    <servlet-name>session</servlet-name>  
    8.    <url-pattern>/servlet/session</url-pattern>  
    9.  </servlet-mapping>  
    

    注:在編寫java類文件的時候,如果是保存在某個具體的包下面,比如說com/fr/data下面,那么除了需要將class文件放置在對應位置下之外,web.xml文件中的servlet-class標簽也需要修改,比如說修改為com.fr.data.session。

    3.4 獲取session值

    在另外一個參數模版如%FR_HOME%\WebReport\WEB-INF\reportlets\doc\Primary\Parameter\Parameter1.cpt將數據集中地區參數的默認值華北刪除,并且參數控件的控件值中選擇公式并輸入$sessionname(servlet中session的名字),如下圖:

    圖片1.png

    注:sessionname是指java類中的sessionname。

    3.5 效果查看

    分頁預覽parameter.cpt,在文本框中輸入中國后,再預覽parameter1.cpt,可以看到文本框中顯示的是中國了,如下圖:

    圖片2.png

     




    只有注冊用戶登錄后才能發表評論。


    網站導航:
    博客園   IT新聞   Chat2DB   C++博客   博問  
     
    主站蜘蛛池模板: 1000部拍拍拍18勿入免费视频软件 | 午夜国产精品免费观看| 九月丁香婷婷亚洲综合色| 一级成人a做片免费| 亚洲色偷拍区另类无码专区| 美女视频黄频a免费| 免费一级毛片女人图片| 美女被免费网站视频在线| 亚洲国产天堂久久综合| 亚洲精品视频免费观看| 亚洲人成网亚洲欧洲无码久久| 久久精品成人免费国产片小草| 亚洲欧洲国产精品香蕉网| 久久国产精品2020免费m3u8| 亚洲人成在线观看| 中字幕视频在线永久在线观看免费| 亚洲精品乱码久久久久久下载 | 久操视频在线免费观看| 亚洲视频欧洲视频| aa级一级天堂片免费观看| 亚洲精品无码av中文字幕| 伊在人亚洲香蕉精品区麻豆| 国产精品黄页免费高清在线观看| 国产亚洲精品国产| 国产一卡二卡四卡免费| 亚洲日韩AV无码一区二区三区人| 永久免费AV无码网站在线观看| 羞羞视频免费网站含羞草| 久久亚洲精品中文字幕三区| 在线看片v免费观看视频777 | 亚洲中文字幕乱码一区| 亚洲高清国产拍精品青青草原| 国产免费MV大全视频网站| 亚洲精品网站在线观看你懂的| 天天操夜夜操免费视频| 9久久免费国产精品特黄| 亚洲乱码卡一卡二卡三| 亚洲性日韩精品一区二区三区| 中文字幕免费视频| 国产AV日韩A∨亚洲AV电影| 亚洲成av人片在线观看无码不卡|