关于webwork+freemarker的简单实例

简介:

 

关于webwork+freemarker的简单实例

 

action类:

 

public class TestAction extends CoreActionSupport implements BaduObjectLoader {

 public List getUsers() {
  return users;
 }
 private List users;
 
 
 public String execute() {
  
  List users_=new ArrayList();
  
  BigDecimal amount1 = new BigDecimal(Double.toString(99999999.66));
  BigDecimal amount2 = new BigDecimal(Double.toString(88888888.77));
  BigDecimal amount3 = new BigDecimal(Double.toString(77777777.88));
  
  TopInUser u1=new TopInUser();
  u1.setCount(10002);
  u1.setNickname("zhangsan");
  u1.setUid(123);
  u1.setAmount(amount1);
  
  
  TopInUser u2=new TopInUser();
  u2.setCount(10003);
  u2.setNickname("zhangsan");
  u2.setUid(123);
  u2.setAmount(amount2);
  
  TopInUser u3=new TopInUser();
  u3.setCount(1044);
  u3.setNickname("zhangsan444");
  u3.setUid(5555);
  u3.setAmount(amount3);
  
  users_.add(u1);
  users_.add(u2);
  users_.add(u3);
  
  users=users_;
  
  
  return SUCCESS;
 }
 public String loadObjects() throws Exception {
  // TODO Auto-generated method stub
  return SUCCESS;
 }
 
 
 
 
 

}


实体类:

public class TopInUser {
 
 
 private long uid; //用户id
 private int count; //数量
 private String nickname; //用户昵称
 private java.math.BigDecimal amount; //金额
 
 public java.math.BigDecimal getAmount() {
  return amount;
 }
 public void setAmount(java.math.BigDecimal amount) {
  this.amount = amount;
 }

 
 public String getNickname() {
  return nickname;
 }
 public void setNickname(String nickname) {
  this.nickname = nickname;
 }
 public long getUid() {
  return uid;
 }
 public void setUid(long uid) {
  this.uid = uid;
 }
 public int getCount() {
  return count;
 }
 public void setCount(int count) {
  this.count = count;
 }


}


webwork配置文件:


       <action name="test" class="com.guagua.vas.top.action.TestAction">
   <result name="success" type="freemarker">/test/index.html</result>
        </action>


注意属性:type="freemarker"   表示 视图采用freemarker来显示数


官方推荐为模板文件后缀为ftl,其他后缀也可以 这里为html

 

下面看index.html:


<html>
  <body>
 
  <h1>webwork freemarker demo</h1>
 
  <br/>
   
   total: ${users?size}  <br/><br/>
 
    <#list users as user>
      <li>
        ${user_index+1}---------- ${user.uid?c}-${user.count?c}-${user.nickname}---${user.amount?c}
      </li>
    </#list>
    
  <h1>webwork freemarker demo</h1>
 
 
      <#list users as user>
      <li>
        ${user_index+1}---------- ${user.uid?c}-${user.count?c}-${user.nickname?substring(0,5)?trim?upper_case}---${user.amount?c}
      </li>
    </#list>
   
    <hr/>
   
     get first object: <br/>
     first : ${users?first.uid?c}  <br/><br/>
    
     get last object: <br/>
     last : ${users?last.uid?c}  <br/><br/>
    
    
    
    
    
     <hr/>
    
    
    <#list users as user>
   
   
<#if user_index=0>
      <li>
       第一 ${user_index+1}---------- ${user.uid?c}-${user.count?c}-${user.nickname?substring(0,5)?trim?upper_case}---${user.amount?c}
      </li>

</#if>

<#if user_index=1>
      <li>
       第二   ${user_index+1}---------- ${user.uid?c}-${user.count?c}-${user.nickname?substring(0,5)?trim?upper_case}---${user.amount?c}
      </li>

</#if>

<#if user_index=2>

   <#break>
      <li>
       第三  ${user_index+1}---------- ${user.uid?c}-${user.count?c}-${user.nickname?substring(0,5)?trim?upper_case}---${user.amount?c}
      </li>

</#if>

     
     
     
    </#list>
    
     <hr/>
    
    
    
    
    <#list users as user>
   
   
   <#assign i = user_index>

     ${i}
    
<#switch i>

  <#case 0>
      <li>
        ${user_index+1}---------- ${user.uid?c}-${user.count?c}-${user.nickname?substring(0,5)?trim?upper_case}---${user.amount?c}
      </li>
      <#break>
  <#case 1>
      <li>
        ${user_index+1}---------- ${user.uid?c}-${user.count?c}-${user.nickname?substring(0,5)?trim?upper_case}---${user.amount?c}
      </li>
      <#break>
   <#case 2>
      <li>
        ${user_index+1}---------- ${user.uid?c}-${user.count?c}-${user.nickname?substring(0,5)?trim?upper_case}---${user.amount?c}
      </li>
      <#break>   
   <#default>

</#switch>


   

    </#list>
   

    
  </body>
</html>


访问:


http://www.test.com/test.jspa

 

输出结果:

 

目录
相关文章
|
定位技术 开发工具 开发者
为了让外卖小哥在地图里开上火箭🚀我用FLutter自定义了地图
花了五天时间,用Flutter自定义地图是什么体验?外卖小哥都开上火箭了?什么?我被女朋友赶出家门啦?欢迎观看被女友赶出家门之开火箭送外卖篇~
|
SQL 分布式计算 算法
Hive关联时丢失数据问题和常用的Hive SQL参数设置
针对结果的发生,本文从以下方面分析原因及提供解决方案: - 右表没有匹配的数据 - 关联键数据类型不匹配 - 受count列null值影响 - Hive版本问题,在某些版本中,左连可能导致右表为null - 数据倾斜 并在文末附属了`Hive SQL常用参数设置`的说明。
Hive关联时丢失数据问题和常用的Hive SQL参数设置
|
机器学习/深度学习 搜索推荐 算法
推荐系统离线评估方法和评估指标,以及在推荐服务器内部实现A/B测试和解决A/B测试资源紧张的方法。还介绍了如何在TensorFlow中进行模型离线评估实践。
推荐系统离线评估方法和评估指标,以及在推荐服务器内部实现A/B测试和解决A/B测试资源紧张的方法。还介绍了如何在TensorFlow中进行模型离线评估实践。
742 0
报错:tk.mybatis.mapper.provider.EmptyProvider中缺少selectOne方法!
报错:tk.mybatis.mapper.provider.EmptyProvider中缺少selectOne方法!
304 0
|
算法 机器学习/深度学习 数据挖掘
带你读《增强型分析:AI驱动的数据分析、 业务决策与案例实践》之三:预测模型的新技术
本书“深入浅出的原理介绍 + 实际使用的案例”的内容安排能够使得数据分析建模人员从算法原理、数据挖掘知识结构、业务应用方法等方面得到提升,帮助数据分析建模人员开阔眼界、优化知识结构、提升实践技能。
|
5月前
|
关系型数据库 MySQL 数据库
《深入探讨XGBoost与MySQL数据交互:细节与洞察》
在数据驱动时代,XGBoost与MySQL的数据交互至关重要。本文探讨了两者结合时的多个关键点:**数据格式适配**(如文本编码、日期处理)、**性能考量**(分批读取、索引优化)、**数据一致性与完整性**(事务管理、异常回滚)、**数据安全与权限管理**(授权访问、加密传输)、**数据更新与实时性**(触发器或轮询机制)以及**连接管理与稳定性**(连接池技术、重试机制)。全面处理这些方面,可实现高效、稳定且安全的数据交互,为数据分析和机器学习提供可靠支持。
123 28
|
7月前
|
存储 Prometheus 监控
Centos7.9版本安装collectd并开启写入rrd文件功能
Centos7.9版本安装collectd并开启写入rrd文件功能
184 13
|
机器学习/深度学习 API 异构计算
7.1.3.2、使用飞桨实现基于LSTM的情感分析模型的网络定义
该文章详细介绍了如何使用飞桨框架实现基于LSTM的情感分析模型,包括网络定义、模型训练、评估和预测的完整流程,并提供了相应的代码实现。
|
10月前
|
安全 Java
线程安全的艺术:确保并发程序的正确性
在多线程环境中,确保线程安全是编程中的一个核心挑战。线程安全问题可能导致数据不一致、程序崩溃甚至安全漏洞。本文将分享如何确保线程安全,探讨不同的技术策略和最佳实践。
153 6
C# .net webapi使用swagger时显示controller注释
C# .net webapi使用swagger时显示controller注释
485 0

热门文章

最新文章