newscontroller.java
来自「anewssystem新闻发布系统集成使用了spring hibernate f」· Java 代码 · 共 698 行 · 第 1/2 页
JAVA
698 行
package anni.anews.web;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import anni.anews.domain.News;
import anni.anews.domain.NewsCategory;
import anni.anews.domain.NewsConfig;
import anni.anews.domain.NewsTag;
import anni.anews.manager.NewsCategoryManager;
import anni.anews.manager.NewsConfigManager;
import anni.anews.manager.NewsManager;
import anni.anews.manager.NewsTagManager;
import anni.anews.web.support.FreemarkerGenerator;
import anni.core.dao.support.Page;
import anni.core.grid.LongGridController;
import anni.core.json.JsonUtils;
import anni.core.web.prototype.SimpleDateEditor;
import net.sf.json.JSONObject;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.hibernate.Criteria;
import org.hibernate.criterion.Restrictions;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.ServletRequestDataBinder;
/**
* @author Lingo.
* @since 2007年08月16日 下午 23时13分12秒765
*/
public class NewsController extends LongGridController<News, NewsManager> {
/** * logger. */
private static Log logger = LogFactory.getLog(NewsController.class);
/** * newsCategoryManager. */
private NewsCategoryManager newsCategoryManager = null;
/** * newsTagManager. */
private NewsTagManager newsTagManager = null;
/** * newsConfigManager. */
private NewsConfigManager newsConfigManager = null;
/** * freemarkerGenerator. */
private FreemarkerGenerator freemarkerGenerator = null;
/** * constructor. */
public NewsController() {
//setEditView("/anews/news/editNews");
//setListView("/anews/news/listNews");
}
/** * @param newsCategoryManager NewsCategoryManager. */
public void setNewsCategoryManager(
NewsCategoryManager newsCategoryManager) {
this.newsCategoryManager = newsCategoryManager;
}
/** * @param newsTagManager NewsTagManager. */
public void setNewsTagManager(NewsTagManager newsTagManager) {
this.newsTagManager = newsTagManager;
}
/** * @param newsConfigManager NewsConfigManager. */
public void setNewsConfigManager(NewsConfigManager newsConfigManager) {
this.newsConfigManager = newsConfigManager;
}
/** * @param freemarkerGenerator FreemarkerGenerator. */
public void setFreemarkerGenerator(
FreemarkerGenerator freemarkerGenerator) {
this.freemarkerGenerator = freemarkerGenerator;
}
/**
* 向模型中设置关联数据.
*
* @param model ModelAndView中的数据模型
*/
protected void referenceData(Map model) {
model.put("categoryList", newsCategoryManager.loadTops());
model.put("tagList", newsTagManager.getAll());
model.put("config", newsConfigManager.get(1L));
}
/**
* 绑定选中的分类.
*
* @param request 请求
* @param command 需要绑定的command
* @param binder 绑定工具
* @throws Exception 异常
*/
protected void preBind(HttpServletRequest request, Object command,
ServletRequestDataBinder binder) throws Exception {
binder.setDisallowedFields(new String[] {
"category_id", "tags", "status", "enter", "image"
});
News entity = (News) command;
// ================================================
// 绑定新闻分类
long categoryId = getLongParam("category_id", -1L);
NewsCategory newsCategory = newsCategoryManager.get(categoryId);
entity.setNewsCategory(newsCategory);
// ================================================
// 图片上传
String imagePath = upload2File("uploadfiles/news/images/", "image");
if ((imagePath != null) && !imagePath.equals("")) {
entity.setImage(imagePath);
}
// ================================================
// 确定新闻状态
int status = getIntParam("status", 0);
if (status == News.STATUS_DRAFT) {
entity.setStatus(News.STATUS_DRAFT);
} else {
// 是否立即发布
int quick = getIntParam("quick", 0);
if (quick == 0) {
// 如果需要审核
entity.setStatus(News.STATUS_WAIT);
} else {
// 直接发布状态
entity.setStatus(News.STATUS_NORMAL);
}
}
}
/**
* 添加.
*
* @throws Exception 异常
*/
public void onInsert() throws Exception {
postEdit();
}
/**
* 修改.
*
* @throws Exception 异常
*/
public void onUpdate() throws Exception {
postEdit();
}
/**
* 插入或更新后的操作.
*/
private void postEdit() {
News news = (News) mv.getModel().get("news");
// FIXME: 如果是添加新闻,这步是不需要的
if (!news.getNewsTags().isEmpty()) {
news.getNewsTags().removeAll(news.getNewsTags());
}
if (news.getUpdateDate() == null) {
news.setUpdateDate(new Date());
}
// 如果不是链接新闻,则根据updateDate生成指向静态页面的路径
if ((news.getLink() == null) || news.getLink().equals("")) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
news.setLink(request.getContextPath() + "/html/"
+ news.getNewsCategory().getId() + "/"
+ sdf.format(news.getUpdateDate()) + "/" + news.getId()
+ ".html");
}
String tags = getStrParam("tags", "");
logger.info(tags);
if (!tags.equals("")) {
String[] array = tags.split(",");
for (String tagName : array) {
NewsTag tag = newsTagManager.createOrGet(tagName);
logger.info(tag);
//if (!news.getTags().contains(tag)) {
news.getNewsTags().add(tag);
getEntityDao().save(news);
//tag.getNewses().add(news);
//}
}
}
getEntityDao().save(news);
generateHtml(news);
//mv.setViewName(successView + "?status=" + news.getStatus());
}
/**
* 生成html静态页面.
*
* @param entity 新闻
*/
/*
private void generateHtml(News entity) {
// 0 不分页 1 手工分页 2 自动分页
int page = getIntParam("page", 0);
int pageSize = getIntParam("pagesize", 1000);
String root = request.getRealPath("/");
String ctx = request.getContextPath();
NewsConfig newsConfig = newsConfigManager.getDefaultConfig();
freemarkerGenerator.genNews(entity, page, pageSize, root, ctx,
newsConfig.getTemplateName());
}
*/
/**
* 修改新闻状态.
*/
/*
public vo2007-11-1 changeStatus() {
logger.info("start");
int status = getIntParam("status", -1);
if ((status == -1) || (status > 6)) {
//mv.setViewName(successView);
return;
}
//Serializable[] ids = getPrimaryKeys();
Serializable[] ids = null;
int success = 0;
if (ids != null) {
for (Serializable id : ids) {
try {
News entity = getEntityDao().get(id);
if (entity == null) {
continue;
}
entity.setStatus(status);
getEntityDao().save(entity);
success++;
} catch (DataIntegrityViolationException e) {
//saveMessage(onRemoveSelectedFailure(id));
}
}
saveMessage("成功处理" + success + "条纪录!");
}
//mv.setViewName(successView + "?status=" + status);
}
*/
/**
* 模糊查询,限于name,subtitle,summary和content.
*/
public void search() {
logger.info("start");
String keywords = getStrParam("keywords", "").trim();
if (keywords.equals("")) {
mv.setViewName("/anews/news/search");
return;
}
keywords = "%" + keywords + "%";
int pageNo = getIntParam("pageNo", 1);
String hql = "from News where name like ? or subtitle like ? or summary like ? or content like ?";
Page page = getEntityDao()
.pagedQuery(hql, pageNo, 20, keywords, keywords,
keywords, keywords);
mv.addObject("page", page);
logger.info(page.getResult());
mv.setViewName("/anews/news/search");
}
// 前台显示模板
/** * index. */
/*
public void index() {
NewsConfig newsConfig = newsConfigManager.getDefaultConfig();
String templateName = newsConfig.getTemplateName();
mv.addObject("newsCategoryList",
newsCategoryManager.getAll("theSort", true));
mv.setViewName("/anews/template/" + templateName + "/index");
}
*/
/** * more. */
public void more() {
NewsConfig newsConfig = newsConfigManager.getDefaultConfig();
String templateName = newsConfig.getTemplateName();
long id = getLongParam("id", -1L);
mv.addObject("newsCategory", newsCategoryManager.get(id));
mv.setViewName("/anews/template/" + templateName + "/more");
}
/** * detail. */
public void detail() {
NewsConfig newsConfig = newsConfigManager.getDefaultConfig();
String templateName = newsConfig.getTemplateName();
long id = getLongParam("id", -1L);
mv.addObject("news", getEntityDao().get(id));
mv.setViewName("/anews/template/" + templateName + "/detail");
}
// ====================================================
// ====================================================
/**
* index.
*/
public void index() {
logger.info("start");
mv.addObject("tagList", newsTagManager.getAll());
mv.addObject("config", newsConfigManager.getDefaultConfig());
mv.setViewName("anews/news/index");
}
/**
* 审核新闻.
*/
public void manage() {
logger.info("start");
mv.setViewName("anews/news/manage");
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?