「javaftl页面」javapage

博主:adminadmin 2023-03-22 11:04:10 630

今天给各位分享javaftl页面的知识,其中也会对javapage进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

java jdk1.5为什么获取不到ftl页面的值

项目采用SpringMVC+MyBatis 框架。 页面显示下拉选项框select中的信息(option),是用字符串类型的参数“1.AA,2.BB,3.CC”维护起来,以后修改参数就可以了,不用动代码。我在后台Controller中,通过分割截取参数,以“key=1,value=AA...”的形式存入dataMap 中,然后在前端ftl页面上利用freemarker变量之一的list来遍历dataMap 并存到下拉选项框中的option中,结果报错:freemarker.core.InvalidReferenceException: Expression dataMap is undefined 。我的ist遍历方法和网上说的一样,代码如下:

[html] view plain copy print?

select name="groupid" id="groupidId" class="select01"

option value =""--请选择--/option

#if dataMap?exists

#list dataMap?keys as key

option value="${key}"${dataMap.get(key)}/option

/#list

/#if

/select

上网搜了很久,还是没能解决,后来才发现关键问题所在。 我的原Controller层代码也贴出来:

[java] view plain copy print?

@Controller

@RequestMapping("/hrm/outsync/hrmOutsyncLogAct.do")

public class HrmOutsyncLogAct extends BaseAct {

@Autowired

private HrmOutsyncLogMng hrmOutsyncLogMng;

@Autowired

private DictSysParamMng dictSysParamMng;

@RequestMapping(params ="method=findByPage")

public String span style="color:#FF0000;"findByPage/span(HttpServletRequest request, ModelMap model,EHrmOutsyncLog eHrmOutsyncLog) throws Exception {

if (!this.rightAuth(request, "SysAdmin")) {

return "/msg/noright";

}

return "/hrm/hrmOutsyncLog/hrmOutsyncLogList";

}

@RequestMapping(params ="method=getAjaxData")

@ResponseBody

public String span style="color:#FF0000;"getAjaxData/span(HttpServletRequest request, ModelMap model,EHrmOutsyncLog eHrmOutsyncLog) throws Exception {

if (!this.rightAuth(request, "SysAdmin")) {

return this.beanToJson(new PagerVO());

}

initPageCom(request);

eHrmOutsyncLog.decode();

PagerVO pv = hrmOutsyncLogMng.findByPage(eHrmOutsyncLog);

span style="color:#FF0000;"model.addAttribute("dataMap",this.getGroupidName());/span

@SuppressWarnings("unchecked")

ListEHrmOutsyncLog li=(ListEHrmOutsyncLog) pv.getDatas();

if(!Util.isBlank(li)) {

for (EHrmOutsyncLog eHrmOutsyncLog2 : li) {

eHrmOutsyncLog2.setGroupidName(this.getGroupidName().get(eHrmOutsyncLog2.getGroupid().toString()));

}

}

v.setDatas(li);

return this.beanToJson(pv);

}

public MapObject,String getGroupidName() throws Exception {

String str = dictSysParamMng.getValueByCode("groupidName");

String[] strs = str.split(",");

MapObject, String dataMap = new HashMapObject, String();

for(String s : strs){

String[] strs1 = s.split(":");

dataMap.put(strs1[0], strs1[1]);

}

return dataMap;

}

}

描述下业务:我点击页面对应菜单后,首先会调用findByPage()方法,然后进行权限判定,(有权限)转到hrmOutsyncLogList.ftl页面,此时页面会向后台发出getAjaxData()方法,这时候就会通过service,dao,向数据库查询数据,最后获得的数据会显示在页面对应的位置。页面中有查询按钮,其中有下拉选项框select,里面的数据如前所说所获得。

疑问:通过在后端遍历证明,dataMap中有数据.我也将dataMap放到Modelp 中了,前端的遍历也是没错的,但为什么前端页面没能获取dataMap呢?

原因:症结就是这两个方法findByPage(),getAjaxData()。点击菜单后下一步,select中option的值,也就是页面中dataMap就应该接收到值,而此时并没有向后台发送请求,也就是说应该先出来option中的值,再在页面上显示从数据库中查询出来的数据。从代码

[java] view plain copy print?

span style="color:#FF0000;"model.addAttribute("dataMap",this.getGroupidName());/span

的位置看得出来,这句放错地方了,应该是

[java] view plain copy print?

@RequestMapping(params ="method=findByPage")

public String findByPage(HttpServletRequest request, ModelMap model,EHrmOutsyncLog eHrmOutsyncLog) throws Exception {

if (!this.rightAuth(request, "SysAdmin")) {

return "/msg/noright";

}

span style="color:#FF0000;"model.addAttribute("dataMap",this.getGroupidName());/span

return "/hrm/hrmOutsyncLog/hrmOutsyncLogList";

}

这样就成功一大半了。为啥不是没问题了呢?我发现项目运行后,dataMap是有值了,但是dataMap.get(key)却取不到值,我的key是String类型的,按理说上面freemarker的遍历map方法没问题,不知道是人品问题不。后来换成了dataMap[key],这样就能成功显示option中的值了.

ftl页面可以写java代码吗

语法不一样,有专门的ftl语言,调用好像是 ${ MyClass.nameValue }这种形式的。

ftl是什么格式

ftl(FreeMarker Template Language)是Freemarker模板的文件后缀名。

Freemarker其实是一种比较简单的网页展示技术,说白了就是网页模板和数据模型的结合体。这种结合模式的好处就是,分离了网页界面设计人员和编程人员的工作,让他们各司其职。

简单的说,FreeMarker就是一种用Java编写的模板引擎,该模板引擎可适用于任何场景,它根据模板输出多种规格的文本。从更本质的方面来说,它是一个Java package,面向Java程序员class library。它本身并不是针对最终用户的应用,而是允许程序员将其嵌入到他们的产品中。

扩展资料:

FreeMarker被设计用来生成HTML Web页面,特别是基于MVC(Model View Controller)模式的应用程序。

使用 MVC 模式作为动态的WEB页面的想法,是为了分隔页面设计者 (HTML 设计者) 和程序员。

设计者可以不通过程序员的改变或修改代码来改变网页的样子,因为应用逻辑(Java程序)和页面设计(FreeMa-rker 模版)是分开的。模板不会被复杂繁琐的程序框架所破坏。即使当一个项目的程序员和HIMTL页面的制作者是同一个人时,这种分隔也是很有用,因为这样有助于保持应用的清晰并易于维护。

参考资料:

百度百科-FTL文件格式

Java项目中ftl和jsp可以同时并存么,属于功能模块的

ftl不可以和jsp共存的,二者具有转化关系。

freemarker(FTL)常见语法(JSP中的代码转化为ftl代码) 举例如下:

1、引入公共页面#include "params.ftl"

2、判断是否为空:#if (resultContext.pagination.resultList)?? resultContext.pagination.resultList?size gt 0

3、集合遍历:

#list list as a

${a_index+1}

/#list

4、访问Java类中的静态方法

#if st == stack.findValue("@com.test.bo.SkuTag@NEW")#elseif st == stack.findValue("@com.test.bo.SkuTag@SPECIAL")

5、访问Request对象

${Request.effectType.infoName!'' } 其他域对象比如:Session对象 貌似还是是${Session.*****}

6、使用其他标签如struts2标签:

引入tld:#assign ts=JspTaglibs["/skw-tags"] / 使用: @ts.productPrice loginUrl="${ctxtPath}/login_jsp.html"/

FTL怎么调用java静态方法

静态方法是使用公共内存空间的,就是说所有对象都可以直接引用,不需要创建对象再使用该方法。

例如,我创建一个类,里面有一个静态方法:

class Test{

public static int z(int xx,int yy){

return xx+yy;

}

public int zz(int xx,int yy){

return xx+yy;

}

}

然后在含有main方法的类中使用这个类时,对与以上非静态和静态方法的引用方式是不同的,如下:

import Test;

public class mainClass{

int sum;

public static void main(String args[]){

sum=Test.z(1,2); //直接用 类.方法或者属性就可以使用该方法或属性。

System.out.println(sum);

Test t=new Test();

sum=t.zz(1,2); //因为zz不是静态方法,所以只能只能用Test类创建一个t对象,然后调用该对象的方法。

System.out.println(sum);

}

}

ls他们说的也是有道理的,静态方法只能被静态方法调用。

使用java生成word文档中的ftl怎么写

Java语言提供了一种强大的注释形式:文档注释。可以将源代码里的文档注释提取成一份系统的API文档。我们在开发中定义类、方法时可以先添加文档注释,然后使用javadoc工具来生成自己的API文档。

文档注释以斜线后紧跟两个星号(/**)开始,以星号后紧跟一个斜线(*/)作为结尾,中间部分全部都是文档注释,会被提取到API文档中。

自行搜索一下javadoc即可,示例如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

/**

* 类描述

*

* @author 作者

* @version 版本

*/

public class DemoClass {

/**

* 内部属性:name

*/

private String name;

/**

* Setter方法

* @return name

*/

public String getName() {

return name;

}

/**

* Getter方法

* @param name

*/

public void setName(String name) {

this.name = name;

}

}

javaftl页面的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于javapage、javaftl页面的信息别忘了在本站进行查找喔。