C#.NET 在 MVC 中动态绑定下拉菜单的方法
2010-04-16 10:25
369 查看
参照jforum原有的两个定时作业SummaryScheduler.java和POPJobStarter.java新建UserSyncScheduler.java
修改ConfigKeys.java文件,新增以下语句
修改SystemGlobals.properties文件,新增以下语句
修改quartz-forum.properties文件,新增以下语句:
仿照SummaryScheduler.java新建UserSyncSCheduler.java
仿照SummaryJob.java新建 UserSyncJob.java
等着看效果了。
在ConfigLoader.java中新增
在JForum.java中的public void destroy()中新增
在JForumBaseServlet.java中的protected void startApplication()中新增
修改quartz-forum.properties文件内容相当重要,原先使用的
没有任何效果,改成
后,就成功了.
修改ConfigKeys.java文件,新增以下语句
public static final String USERSYNC_IS_ENABLED = "usersync.enabled";
修改SystemGlobals.properties文件,新增以下语句
usersync.enabled = true
修改quartz-forum.properties文件,新增以下语句:
# user sync 每天12点 org.quartz.context.usersync.cron.expression = 0 0 12 * * ?
仿照SummaryScheduler.java新建UserSyncSCheduler.java
package net.jforum.summary; import net.jforum.util.preferences.ConfigKeys; import net.jforum.util.preferences.SystemGlobals; import org.apache.log4j.Logger; import org.quartz.*; import org.quartz.impl.StdSchedulerFactory; import java.text.ParseException; public final class UserSyncScheduler { private static Scheduler scheduler; private static final Logger LOGGER = Logger.getLogger(UserSyncScheduler.class); private static boolean isStarted = false; private static final Object MUTEX = new Object(); /** * Starts the usersync Job. Conditions to start: Is not started yet and is enabled on the file * SystemGlobasl.properties. The to enable it is "usersync.enabled" * (ConfigKeys.USERSYNC_IS_ENABLED). * * @throws org.quartz.SchedulerException */ public static void startJob() throws SchedulerException { final boolean isEnabled = SystemGlobals.getBoolValue(ConfigKeys.USERSYNC_IS_ENABLED); synchronized (MUTEX) { if (!isStarted && isEnabled) { final String filename = SystemGlobals.getValue(ConfigKeys.QUARTZ_CONFIG); final String cronExpression = SystemGlobals.getValue("org.quartz.context.usersync.cron.expression"); scheduler = new StdSchedulerFactory(filename).getScheduler(); Trigger trigger = null; //触发器 try { trigger = new CronTrigger(UserSyncJob.class.getName(), "usersyncJob", cronExpression); LOGGER.info("Starting quartz usersync expression " + cronExpression); scheduler.scheduleJob(new JobDetail(UserSyncJob.class.getName(), "usersyncJob", UserSyncJob.class), trigger); scheduler.start(); } catch (ParseException e) { LOGGER.error(e.getMessage(), e); } } isStarted = true; } } /** * Stops the usersync Job. Conditions to stop: Is started and is enabled on the file * SystemGlobasl.properties. The to enable it is "usersync.enabled" * (ConfigKeys.USERSYNC_IS_ENABLED). * * @throws org.quartz.SchedulerException */ public static void stopJob() throws SchedulerException { final boolean isEnabled = SystemGlobals.getBoolValue(ConfigKeys.USERSYNC_IS_ENABLED); synchronized (MUTEX) { if (isStarted && isEnabled) { final String filename = SystemGlobals.getValue(ConfigKeys.QUARTZ_CONFIG); final String cronExpression = SystemGlobals.getValue("org.quartz.context.usersync.cron.expression"); scheduler = new StdSchedulerFactory(filename).getScheduler(); try { LOGGER.info("Stopping quartz usersync expression " + cronExpression); scheduler.shutdown(); } catch (SchedulerException e) { LOGGER.error(e.getMessage(), e); } } isStarted = false; } } private UserSyncScheduler() { } }
仿照SummaryJob.java新建 UserSyncJob.java
package net.jforum.summary; import net.jforum.dao.DataAccessDriver; import net.jforum.dao.GroupDAO; import net.jforum.entities.Group; import org.apache.log4j.Logger; import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; import java.util.List; public class UserSyncJob implements Job { private static final Logger LOGGER = Logger.getLogger(UserSyncJob.class); /** * @see org.quartz.Job#execute(org.quartz.JobExecutionContext) */ public void execute(final JobExecutionContext context) throws JobExecutionException { final GroupDAO groupdao = DataAccessDriver.getInstance().newGroupDAO(); try { groupdao.SynchronizationGroup(); //同步组 final List<Group> groups = groupdao.selectAll(); if (groups != null) { for (Group group : groups) { //同步组用户 groupdao.SynchronizationGroupUsers(group.getId()); } } } catch (Exception e) { LOGGER.warn(e); } } }
等着看效果了。
在ConfigLoader.java中新增
public static void startUserSyncJob() throws SchedulerException { UserSyncScheduler.startJob(); }
在JForum.java中的public void destroy()中新增
UserSyncScheduler.stopJob();
在JForumBaseServlet.java中的protected void startApplication()中新增
ConfigLoader.startUserSyncJob();
修改quartz-forum.properties文件内容相当重要,原先使用的
org.quartz.context.usersync.cron.expression = 0 0 12 * * *
没有任何效果,改成
org.quartz.context.usersync.cron.expression = 0 0 12 * * ?
后,就成功了.
相关文章推荐
- 【网摘】C#.NET 在 MVC 中动态绑定下拉菜单的方法
- C#.NET 在 MVC 中动态绑定下拉菜单的方法
- C#.NET 在 MVC 中动态绑定下拉菜单的方法
- ASP.NET MVC 5 (二)动态输出、辅助器方法、模型绑定与添加验证
- ASP.NET MVC 2.0 in Vs2010 :使用C# 4.0中使用动态类型来传递ViewData
- C# Asp.net MVC 分页时传参场景 动态生成QueryString
- 在ASP.NET MVC中使用Knockout实践02,组合View Model成员、Select绑定、通过构造器创建View Model,扩展View Model方法
- c#扩展方法奇思妙用 ASP.NET MVC 篇:巧用扩展方法优先级,美化所有页面 TextBoxFor 文本框
- C#.Net Mvc运营监控,计算方法/接口/action/页面执行时间
- c# 扩展方法奇思妙用 ASP.NET MVC 篇:巧用扩展方法优先级,美化所有页面 TextBoxFor 文本框
- ASP.NET MVC 2.0 in Vs2010 :使用C# 4.0中使用动态类型来传递ViewData
- ASP.NET MVC 中将数据从View传递到控制器中的三种方法(表单数据绑定)
- 每日总结(二)C#判断输入内容为数字、Sharepoint回收应用程序池错误、Asp.Net 会发或回调参数无效、DropDownList动态绑定且设置默认选择项
- asp.net mvc 动态编译生成Controller的方法
- ASP.NET MVC 中将数据从View传递到控制器中的三种方法(表单数据绑定)
- Asp.Net--DropDownList与DataTable数据绑定的方法(C#)[学习笔记]
- C#.Net前端数据post传递方法(mvc)
- (.net)C#动态调用Web服务的几种方法
- 每日总结(二)C#判断输入内容为数字、Sharepoint回收应用程序池错误、Asp.Net 会发或回调参数无效、DropDownList动态绑定且设置默认选择项
- (asp.net c#)DropDownList绑定后显示对应的项的两种方法