導航:首頁 > 編程語言 > freemarker調用java方法調用

freemarker調用java方法調用

發布時間:2023-03-02 15:12:33

❶ FreeMarker里如何調用java代碼

不能使用java代碼,只能使用el表達式,來輸出展示數據..

freemarker 的原則或初衷:
數據+模板=輸出

模板就是 freemarker了,這樣程序員就不能把大量java代碼寫入, 美工和程序員 工作就可以獨立了

❷ 如何在freemarker中調用java的方法

解決方案 »

freeer可以聲明變數,可以寫一些函數,可以調用自己的函數
可~~要實例化java類並且調用它的方法~~~沒遇到過....
幫忙頂!期待高手

急啊,我也想在ftl中調用一個類的靜態方法...

可以,可以將你寫的類當成對象假如到MAP中
然後在再用map?key的方法獲得該類
JAVA代碼
maplist.put("typeTool",this);
FREEMARKER
<#assign name=typeTool.getTypeName(key)>${name}

方法1:
##定義配置文件 freeerstatic.properties
_Validator=com.longyou.util.Validator
_Functions=com.longyou.util.Functions
_EscapeUtils=com.longyou.util.EscapeUtils
/調用代碼
${_Functions.toUpperCase("Hello")}<br>
${_EscapeUtils.escape("狼的原野")}方法2:
${stack.findValue("@package.ClassName@method")}${stack.findValue("@package.ClassName@property")}因為 stack 是webwork結合 freeer 後在 ftl 中可以用的,其他的還有 ${base}等等

❸ 如何使用Freemarker生成java代碼

Freemarker是一個模板框架。我們可以通過Freemarker進行代碼生成或頁面的靜態生成。 現在簡單的說一下怎樣使用Freemarker Freemarker的主要生成類
public boolean generate(String templateFileName, Map data,

String fileName) {

try {

//取得模板的位置

String templateFileDir=templateFileName.substring(0, templateFileName.lastIndexOf("/"));

//取得模板的名字

String templateFile=templateFileName.substring(templateFileName.lastIndexOf("/"), templateFileName.length());

//取得生成文件的路徑

String genFileDir=fileName.substring(0, fileName.lastIndexOf("/"));

Template template = ConfigurationHelper.getConfiguration(templateFileDir).getTemplate(templateFile);

File fileDir=new File(genFileDir);

org.apache.commons.io.FileUtils.forceMkdir(fileDir);

File output = new File(fileName);

if(output.exists()){

//如何代碼已存在不重復生成

return false;

}

Writer writer = new FileWriter(output);

template.process(data, writer);

writer.close();

} catch (TemplateException e) {

e.printStackTrace();

return false;

} catch (IOException e) {

e.printStackTrace();

return false;

}

return true;

}

代碼中的Map 是模板所需要的數據,我們可以通過面向對像的方法把數據存在模板中public boolean genDaoInterface(String fileName){

DaoModel Model=new DaoModel();

//設置Dao實現類的包名

Model.setPackageName(DaoConstant.PACKAGE);

//取得介面名

String className=StringUtils.substringBefore(fileName,".");

//設置介面名

Model.setClassName(className);

Map<String, Object> data = new HashMap<String, Object>();

data.put("model", Model);

//設置生成的位置

String filePath=new String("src/"+package2path(DaoConstant.PACKAGE)+"/"+fileName);

//代碼生成

return super.generate(DaoConstant.INTERFACE_TEMPLATE, data, filePath);

}

data.put("model", Model);由這句代碼可看出我們將可以在模板中直接調用這些數據package ${model.packageName};

public interface ${model.className} extends BaseHibernateDao {

}

❹ 如何利用SQL中數據使用FreeMarker生成JAVA實體bean代碼

利用freemarker生成JAVA BEAN

Freemarker模板代碼如下:

package ${packageName};

/**
* <#if author == "adams"> @author adams </#if>
*/
pulic class ${className} {
<#list attrs as a>
private ${a.type} ${a.field};
</#list>

<#list attrs as a>
public void set${a.field?cap_first}(${a.type} ${a.field}){
this.${a.field} = ${a.field};
}

public ${a.type} get${a.field?cap_first}(){
return this.${a.field};
}

</#list>
}

Java代碼如下

package com.my.learn.freemarker;
public class Attr{
public String field;
public String type;

public Attr(String field, String type){
this.field = field;
this.type = type;
}

public String getField(){
return this.field;
}

public String getType(){
return this.type;
}

public void setField(String field){
this.field = field;
}

public void setType(String type){
this.type = type;
}
}

package com.my.learn.freemarker;
import java.io.File; import java.io.IOException; import java.io.StringWriter; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map;
import freemarker.template.Configuration; import freemarker.template.Template; import freemarker.template.TemplateException;
public class FmAppUseage {

public static void main(String[] args){
List<Object> list = new ArrayList<Object>();
list.add(new Attr("username", "String"));
list.add(new Attr("password", "String"));
list.add(new Attr("age", "int"));
list.add(new Attr("hobby", "String"));

Map<String,Object> root = new HashMap<String, Object>();
root.put("packageName", "com.my.learn.freemarker");
root.put("className", "User");
root.put("attrs", list);
root.put("author", "adams");

Configuration cfg = new Configuration();
String path = FmAppUseage.class.getResource("/").getPath()+"template";
try {
cfg.(new File(path));
Template template = cfg.getTemplate("/demo.ftl");
StringWriter out = new StringWriter();
template.process(root, out);

System.out.println(out.toString());
} catch (IOException e) {
System.out.println("Cause==>" + e.getCause());
} catch (TemplateException e) {
System.out.println("Cause==>" + e.getCause());
}
}
}

輸出結果如下:

package com.my.learn.freemarker;
/**
* @author adams
*/
pulic class User {
private String username;
private String password;
private int age;
private String hobby;

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

public String getUsername(){
return this.username;
}

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

public String getPassword(){
return this.password;
}

public void setAge(int age){
this.age = age;
}

public int getAge(){
return this.age;
}

public void setHobby(String hobby){
this.hobby = hobby;
}

public String getHobby(){
return this.hobby;
}

}

當在筆者剛做測試時,將Attr的類定義在了FmAppUseage類的內部,導致不能正常運行,只能將其移除單獨成一個類時,便能正常運行了。 轉載僅供參考,版權屬於原作者。祝你愉快,滿意請採納哦

❺ 我在java的freemarker文件里有寫個excel按鈕,在action裡面調用方法沒實現

在excel方法第一行打斷點,進入到斷點中了嗎?
如沒有,檢查jsp上提交的那段method.在browser的狀態欄或debug 腳本可以查看是否進入到action.
如解決不了且不涉及隱私,可以發給我,大家互相找找原因.

閱讀全文

與freemarker調用java方法調用相關的資料

熱點內容
安卓手機mp3壓縮工具 瀏覽:214
程序員和交易員 瀏覽:422
怎麼變字體樣式app 瀏覽:173
名字叫湯什麼的視頻app 瀏覽:209
金屬加密鍵盤聯系電話 瀏覽:335
自製解壓牛奶盒子教程 瀏覽:64
編譯高手的圖片 瀏覽:922
單片機數碼管顯示時分秒 瀏覽:780
手指解壓最簡單的方法 瀏覽:345
韓國郵箱伺服器地址 瀏覽:967
android版本介紹 瀏覽:410
pdf文件加密軟體 瀏覽:410
長沙住房app怎麼看備案 瀏覽:603
安裝加密軟體的電腦會被監控么 瀏覽:221
java微博源碼 瀏覽:569
堆排序簡單實現python 瀏覽:461
單片機引腳與鍵盤的關系 瀏覽:132
壓縮火柴盒製作 瀏覽:38
谷歌地圖android偏移 瀏覽:214
bitlocker硬碟加密空間 瀏覽:238