2018-02-26 22:20

不要使用项目名称 在里面搀和。。manage

2018-02-26 22:14

@11594
如果 https://my.oschina.net/jfinal/blog/353062 这个看不懂的话。。。
就照着这个图片操作吧:
部署

2018-02-26 18:27

你贴代码吧, 问题看着有点懵逼。。

你项目叫 “manage” ?
如果是这样的话:https://my.oschina.net/jfinal/blog/353062

如果只是想改Controller的URL的话 :2.3 configRoute(..)

还是想动态的更改 “manage ”这个值 : 2.7 configHandler(..)

2018-02-26 14:03

俱乐部当前发放的福利是本社区 jfinal.com 的源代码,并取名为 jfinal-club。jfinal-club 在核心功能上相当于一个迷你的 OSChina 社区,newsfeed 信息流模块整合了整站动态数据,交互性极好。重要功能:动态消息、@提到我、remind提醒、关注、好友、粉丝、私信、发贴、回贴、点赞、收藏、定时任务等功能。常见的功能也很全面:文件下载、图片上传、用户头像裁剪、登录、注册、邮件激活、找回密码、XSS过滤、缓存、后台管理、以及一些常用工具类等等。

这个项目中有个 kit包,里面有个 EmailKit.java

2018-02-09 17:57

加入 俱乐部 啊,
jfinal-club 是官方出品的唯一 JFinal 最佳实践,绝无仅有的极简设计,获得 jfinal-club 也就获得了作者本人对 JFinal 的使用精髓。

2018-02-09 17:48

@xupengjifnal 打个断点,追踪一下,看是什么时候乱码的,环境都确认好是否UTF-8

2018-02-05 21:35

问题一,拿到plugins :
1, 在 /WEB-INF/web.xml 里面有 一个继承自JFinalConfig类的子类,该类用于对整个web项目进行配置。
例如手册: 2.1 概述
2,找到public void configPlugin(Plugins me) 方法:
2.5 configPlugin(..)
参数列表Plugins me 就是它了。
当然 new Druidplugin (...) 一般也在这里写的, 所以直接用就好。

问题二,Druidplugin 是否有方法支持:
源码中有这个方法:防SQL注入:"wall"


/**
* 设置过滤器,如果要开启监控统计需要使用此方法或在构造方法中进行设置
*


* 监控统计:"stat"
* 防SQL注入:"wall"
* 组合使用: "stat,wall"
*


*/
public DruidPlugin setFilters(String filters) {
this.filters = filters;
return this;
}

但是我没有试过, 你可以自己试试。
还有一个大招:

public DataSource getDataSource() {
return ds;
}

2018-02-02 17:28

@vtjj3213
3X版已经不推荐使用nextHandler了, 赶快升级吧~
/**
* Use next instead of nextHandler
*/
@Deprecated
protected Handler nextHandler;

搜索功能:
20171228194223.png

2018-02-02 13:45

去项目的 WebRoot/WEB-INF/web.xml 里面找 一个叫 :



jfinal
com.jfinal.core.JFinalFilter

configClass
java源码中找到这个类Config



在那个类里configHandler方法面加:

public void configHandler(Handlers me) {
me.add(new JfHandler());


搞定~~

2018-02-02 13:37


package com.xxx.common.handler;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.jfinal.handler.Handler;

public class JfHandler extends Handler {

@Override
public void handle(String target, HttpServletRequest request,
HttpServletResponse response, boolean[] isHandled) {
if (target.startsWith("/jf/")) {
next.handle(target, request, response, isHandled);
}
}

}

2018-02-02 12:21

建一个 Handler , 先判断 target 请求路径是不是 JFinal项目的,
(比如判断前缀, 路由统一使用某一个前缀,推荐“/jf/xxx”),
如果是就调用 next.handle( 。。。,
不是就放过去让老项目处理

2018-02-01 10:02

想不报错 只需要在后面加个 true
getBean(Class beanClass, boolean skipConvertError)
getBean(beanClass, true)
不贴异常信息还得猜。。
看看源码:打个断点进去看看吧~



public static T injectBean(Class beanClass, HttpServletRequest request, boolean skipConvertError) {
String beanName = beanClass.getSimpleName();
return (T)injectBean(beanClass, StrKit.firstCharToLowerCase(beanName), request, skipConvertError);
}

@SuppressWarnings("unchecked")
public static final T injectBean(Class beanClass, String beanName, HttpServletRequest request, boolean skipConvertError) {
Object bean = createInstance(beanClass);
String modelNameAndDot = StrKit.notBlank(beanName) ? beanName + "." : null;
TypeConverter converter = TypeConverter.me();
Map parasMap = request.getParameterMap();
Method[] methods = beanClass.getMethods();
for (Method method : methods) {
String methodName = method.getName();
if (methodName.startsWith("set") == false || methodName.length() <= 3) { // only setter method
continue;
}
Class[] types = method.getParameterTypes();
if (types.length != 1) { // only one parameter
continue;
}

String attrName = StrKit.firstCharToLowerCase(methodName.substring(3));
String paraName = modelNameAndDot != null ? modelNameAndDot + attrName : attrName;
if (parasMap.containsKey(paraName)) {
try {
String paraValue = request.getParameter(paraName);
Object value = paraValue != null ? converter.convert(types[0], paraValue) : null;
method.invoke(bean, value);
} catch (Exception e) {
if (skipConvertError == false) {
throw new RuntimeException(e);
}
}
}
}

return (T)bean;
}