Java源代码索拉卡多少钱 有偿200块钱找人帮做下 一个页面增删改

&index.html &-登录-&stulist.jsp (index.html传递到LoginServlet,进行登录检测及写入session,NO返回index.html界面,OK 跳转到stulist.jsp)
stulist.jsp 实现对学生的增删改查及分页.(stulist.jsp检测是否有session,以及student列表中是否有学生信息,没有session返回index页面,student列表中没有信息调用GetStudentServlet获取学生信息,获取过程中已分页)
数据库操作类详见:
&stulist.jsp界面如下:
查询:可以实现组合查询,输入条件,点击‘查询’即可
增加:在上方输入完整学生信息后,选择‘添加’选项按钮,添加可用,点击‘添加’,即将刚才填写的学生信息,增加的数据库中
删除:在要删除的学生后点击‘删除’,弹出‘询问框’,是否要删除该学生信息,选择‘是’从数据库中删除该学生,选择‘否’取消对该学生的删除操作。
修改:在要修改的学生后点击‘修改’,表格上方,显示一排信息框,除学号外,填写好更改的信息,点击更新,即可,或者点击‘取消’,取消本次的更新。
(如果删除了该学生,则该页面会刷新,上方的更新框会隐藏,即不会存在逻辑性错误)。
对于分页:
&这里没有让用户输入每页显示多少条信息,而是笔者自己再代码中写好的,每页显示10条,如果没有条件则显示如下:
如果加上条件,则显示为:
在stulist.jsp 页面中共有两个表单,一个表单传入到 GetStudentServlet&执行stulist.jsp传入的数据进行分页跳转,插入输入,查询数据,flag=3 分页跳转 flag=2插入 flag=1查询,一个表单传入到GetStudentServlet_extend&执行stulist.jsp传入的数据进行删除和修改数据,flag=1 删除 flag=2修改
以上两个Servlet操作完后都会返回student数组列表对象在stulist显示。(使用StudentDao对象得到student数组列表)
StudentDao:
1 package com.mis.
3 import java.sql.ResultS
4 import java.sql.SQLE
5 import java.util.ArrayL
6 import com.mis.bean.S
8 public class StudentDao extends DBOper{
public ArrayList&Student& getStudent(int flag,String parameter,int crrentPage){//分页查询
<span style="color: #
String sql="select id,stuno,name,sex,age,major from student order by id desc";
<span style="color: #
if (flag&0) {
<span style="color: #
sql= "select * from student where "+
<span style="color: #
<span style="color: #
crrentPage=(crrentPage==0?0:crrentPage-1);
<span style="color: #
sql+=" limit "+crrentPage*10+",10";//默认每页显示
<span style="color: #
ArrayList&Student& students = new ArrayList&Student&();
<span style="color: #
ResultSet rs = executeQuery(sql,null);
<span style="color: #
<span style="color: #
while(rs.next()){
<span style="color: #
Student s = new Student();
<span style="color: #
s.setId(rs.getInt("id"));
<span style="color: #
s.setStuno(rs.getString("stuno"));
<span style="color: #
s.setName(rs.getString("name"));
<span style="color: #
s.setSex(rs.getString("sex"));
<span style="color: #
s.setAge(rs.getInt("age"));
<span style="color: #
s.setMajor(rs.getString("major"));
<span style="color: #
students.add(s);
<span style="color: #
<span style="color: #
} catch (SQLException e) {
<span style="color: #
e.printStackTrace();
<span style="color: #
<span style="color: #
<span style="color: #
<span style="color: #
public int getStudentCount(int flag,String parameter){//得到查询的总条数
<span style="color: #
String sql="select id,stuno,name,sex,age,major from student";
<span style="color: #
if (flag&0) {
<span style="color: #
sql= "select * from student where "+
<span style="color: #
<span style="color: #
ResultSet rs = executeQuery(sql,null);
<span style="color: #
<span style="color: #
rs.last();
<span style="color: #
return rs.getRow();
<span style="color: #
} catch (SQLException e) {
<span style="color: #
<span style="color: #
<span style="color: #
<span style="color: #
public ArrayList&Student& getStudent(int flag,String parameter){//未分页查询
<span style="color: #
String sql="select id,stuno,name,sex,age,major from student order by id";
<span style="color: #
if (flag&0) {
<span style="color: #
sql= "select * from student where "+
<span style="color: #
<span style="color: #
ArrayList&Student& students = new ArrayList&Student&();
<span style="color: #
ResultSet rs = executeQuery(sql,null);
<span style="color: #
<span style="color: #
while(rs.next()){
<span style="color: #
Student s = new Student();
<span style="color: #
s.setId(rs.getInt("id"));
<span style="color: #
s.setStuno(rs.getString("stuno"));
<span style="color: #
s.setName(rs.getString("name"));
<span style="color: #
s.setSex(rs.getString("sex"));
<span style="color: #
s.setAge(rs.getInt("age"));
<span style="color: #
s.setMajor(rs.getString("major"));
<span style="color: #
students.add(s);
<span style="color: #
<span style="color: #
} catch (SQLException e) {
<span style="color: #
e.printStackTrace();
<span style="color: #
<span style="color: #
<span style="color: #
<span style="color: #
public int addDelUp(String sql) {
<span style="color: #
int num=0;
<span style="color: #
num=executeUpdate(sql,null);
<span style="color: #
if(num!=0)return
<span style="color: #
<span style="color: #
<span style="color: # }
GetStudentServlet_extend
1 package com.mis.
3 import java.io.IOE
4 import java.util.ArrayL
6 import javax.servlet.ServletC
7 import javax.servlet.ServletE
8 import javax.servlet.http.HttpS
9 import javax.servlet.http.HttpServletR
<span style="color: # import javax.servlet.http.HttpServletR
<span style="color: #
<span style="color: # import com.mis.bean.S
<span style="color: # import com.mis.dao.StudentD
<span style="color: #
<span style="color: # public class GetStudentServlet_extend extends HttpServlet {
<span style="color: #
private static final long serialVersionUID = 1L;
<span style="color: #
<span style="color: #
public GetStudentServlet_extend() {
<span style="color: #
<span style="color: #
<span style="color: #
<span style="color: #
// 执行stulist.jsp传入的数据进行删除和修改数据,flag=1 删除 flag=2修改
<span style="color: #
protected void doGet(HttpServletRequest request, HttpServletResponse response)
<span style="color: #
throws ServletException, IOException {
<span style="color: #
request.setCharacterEncoding("utf-8");
<span style="color: #
response.setContentType("text/charset=utf-8");
<span style="color: #
ServletContext ctx = this.getServletContext();
<span style="color: #
String server = ctx.getInitParameter("server");
<span style="color: #
String dbname = ctx.getInitParameter("dbname");
<span style="color: #
String user = ctx.getInitParameter("user");
<span style="color: #
String pwd = ctx.getInitParameter("pwd");
<span style="color: #
StudentDao dao = new StudentDao();
<span style="color: #
String sql = null;
<span style="color: #
int flag = 0;
<span style="color: #
<span style="color: #
flag = Integer.parseInt(request.getParameter("flag_delUp"));
<span style="color: #
} catch (Exception e) {
<span style="color: #
<span style="color: #
<span style="color: #
String stuid = request.getParameter("ud");
<span style="color: #
String stuname = request.getParameter("ud_name");
<span style="color: #
String stusex = request.getParameter("ud_sex");
<span style="color: #
String stuage = request.getParameter("ud_age");
<span style="color: #
String stumajor = request.getParameter("ud_major");
<span style="color: #
String del_stuid = request.getParameter("parameter_del");
<span style="color: #
if (flag == 1) {// 执行删除
<span style="color: #
<span style="color: #
<span style="color: #
sql = "Delete from student where stuno='" + del_stuid + "';";
<span style="color: #
dao.getConn(server, dbname, user, pwd);
<span style="color: #
dao.addDelUp(sql);
<span style="color: #
} catch (Exception e) {
<span style="color: #
e.printStackTrace();
<span style="color: #
<span style="color: #
} else if (flag == 2) {// 执行修改
<span style="color: #
<span style="color: #
sql = "update student set name='" + stuname + "',sex='" + stusex + "',age='" + stuage + "',major='"
<span style="color: #
+ stumajor + "' where stuno='" + stuid + "';";
<span style="color: #
<span style="color: #
dao.getConn(server, dbname, user, pwd);
<span style="color: #
dao.addDelUp(sql);
<span style="color: #
} catch (Exception e) {
<span style="color: #
e.printStackTrace();
<span style="color: #
<span style="color: #
<span style="color: #
<span style="color: #
dao.getConn(server, dbname, user, pwd);
<span style="color: #
ArrayList&Student& students = dao.getStudent(0, null, 0);
<span style="color: #
request.setAttribute("stuCount", dao.getStudentCount(0, null));
<span style="color: #
request.setAttribute("students", students);
<span style="color: #
request.setAttribute("currentPage", 1);//默认用户打开的分页第一页
<span style="color: #
request.getRequestDispatcher("stulist.jsp").forward(request, response);
<span style="color: #
<span style="color: #
} catch (Exception e) {
<span style="color: #
e.printStackTrace();
<span style="color: #
<span style="color: #
<span style="color: #
<span style="color: #
<span style="color: #
protected void doPost(HttpServletRequest request, HttpServletResponse response)
<span style="color: #
throws ServletException, IOException {
<span style="color: #
doGet(request, response);
<span style="color: #
<span style="color: # }
stulist.jsp
1 &%@ page language="java" contentType="text/ charset=UTF-8"
pageEncoding="UTF-8"%&
3 &%@ page import="java.util.*"%&
4 &%@ page import="java.lang.Math"%&
5 &%@ page import="com.mis.bean.Student"%&
6 &%@ page import="com.mis.dao.DBOper"%&
7 &%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%&
8 &%@taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%&
9 &!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"&
12 &meta http-equiv="Content-Type" content="text/ charset=UTF-8"&
13 &title&学生信息列表&/title&
15 &script src="js_jquery/stulist.js" charset="UTF-8"&&/script&
16 &link rel="stylesheet" href="css/stulist.css"&
17 &/head&
&c:if test="${username==null }"&
&jsp:forward page="index.html"&&/jsp:forward&
&c:if test="${students==null}"&
&jsp:forward page="getStudent"&&/jsp:forward&
&table border="0" align="center" cellspacing="0" class="list_table"
id="senfe" style='width: 90%'&
&td colspan='7'&
&form method="POST" name="form" action="getStudent"&
&!-- 开发阶段 没有对用户的非法输入进行过滤--&
&input type="hidden" name="flag" value="1"& &input
type="text" name="stuid" value="学号"
onclick="if(this.value == '学号')this.value ='';"
onBlur="if(this.value == ' '||this.value == '')this.value ='学号';"&
&input type="text" name="stuname" value="姓名"
onclick="if(this.value == '姓名')this.value ='';"
onBlur="if(this.value == ' '||this.value == '')this.value ='姓名';"&
&input type="text" name="stusex" value="性别"
onclick="if(this.value == '性别')this.value ='';"
onBlur="if(this.value == ' '||this.value == '')this.value ='性别';"&
&input type="text" name="stuage" value="年龄"
onclick="if(this.value == '年龄')this.value ='';"
onBlur="if(this.value == ' '||this.value == '')this.value ='年龄';"&
&input type="text" name="stumajor" value="专业"
onclick="if(this.value == '专业')this.value ='';"
onBlur="if(this.value == ' '||this.value == '')this.value ='专业';"&
&input type="radio" name="selAdd" checked onclick="selop()"&
&input type="submit" value="查询" id="selcon"& &input
type="radio" name="selAdd" onclick="selop()"&&input
type="submit" disabled value="增加" id="addcon" onclick="setPar()"&
&th&学号&/th&
&th&姓名&/th&
&th&性别&/th&
&th&年龄&/th&
&th&专业&/th&
&th&删除&/th&
&th&修改&/th&
&form method="post" name="DelUp" action="getStudent_extend"&
&c:forEach var="student" items="${students }"&
&tr align="center"&
&td&${student.stuno }&/td&
&td&${student.name }&/td&
&td&${student.sex }&/td&
&td&${student.age }&/td&
&td align="left"&${student.major }&/td&
&td&&input type="submit" name=${student.stuno } value="删除"
onclick="del(this)"&&/td&
&td&&input type="button" name=${student.stuno } value="修改"
onclick="updata(this)"&&/td&
&/c:forEach&
&div id="updateDiv"&
学号:&input type="text" name="ud" readOnly&
姓名:&input type="text" name="ud_name"&
性别:&input type="text" name="ud_sex"&
年龄:&input type="text" name="ud_age"&
专业:&input type="text" name="ud_major"&
&input type="submit" value="更新"&
&span id="cancelUpdate" onclick="cancelupdate()"&取消&/span&
&input type="hidden" name="flag_delUp"& &input type="hidden"
name="parameter_del"&
&div id="pageCount" style="width:600margin-left:margin-right:"&
&c:if test="${stuCount!=null}"&
<span style="color: #0
&br /&&c:if test="${condition!=null&&condition!=''}"&查询条件为&c:out value="${condition}"&&/c:out&&/c:if&
<span style="color: #1
&c:out value="${stuCount}"&&/c:out&条记录,&!-- Math.ceil() 向上取整
-- (stuCount-((stuCount-1)%10))/10+1 ** --&
<span style="color: #2
共&fmt:formatNumber type="number" value="${(stuCount-((stuCount-1)%10))/10+1}" maxFractionDigits="0"/&页
<span style="color: #3
,当前为第&c:out value="${currentPage}"&&/c:out&页
<span style="color: #4
<span style="color: #5
&form method="post" name="paging" action="getStudent"&
<span style="color: #6
&input type="text" value="" name="page" onkeyup="this.value=this.value.replace(/\D/g,'')" onafterpaste="this.value=this.value.replace(/\D/g,'')"&
<span style="color: #7
&input type="hidden" name="flag" value="3"&
<span style="color: #8
&input type="hidden" name="parame" value='&c:out value="${condition}"&&/c:out&'&
<span style="color: #9
type="submit" value="跳转" onclick="checkPage()"&
<span style="color: #0
<span style="color: #1
<span style="color: #2
<span style="color: #3 &/body&
<span style="color: #4 &/html&
阅读(...) 评论()休闲娱乐生活服务其他类别扫扫有惊喜
2017年-程序员Java编程进阶的5个注意点别编程两三年还是增删改查对于一个进军编程界的两三年的Java程序员来说,工作如果还只是增删改查,这可是相当痛苦的。有这种情况的程序员,有不少是在外包公司,每天就期待下班,简直就是做一天和尚撞一天钟。为了打破这种僵局,Java程序员在这个迷茫的阶段应做什么呢?下面w3cschool将为程序员小伙伴们分享5个进阶的注意点,顺便附上进阶的书单。0、阅读源代码阅读源代码首先是选择,无论是你选择spring,还是Java Collection,选择了一个就坚持阅读下去,切忌坐这山观那山。在阅读源代码过程中,应该搞清楚以下4个问题:A、源代码是要解决什么问题?B、源代码是通过什么原理实现?C、它采用了哪些接口、类?D、为什么采用这些接口和类?1、多参与项目在参与项目的过程中,你将接触到各种工具Maven/SBT,JUnit等。以代码为核心,以解决问题为前提,你自然可以提高自己对java编程的认识。与此同时,通过项目的细节,你也可以查缺补漏,找到自己知识技能薄弱的环节。2、问题指引你进阶之路Java入门容易精通难,在学习的过程中,尽量以问题为导向,这可以让你的思考和理解聚焦,而不至于分散。
上一页&1共2页热门新闻更多
实时热点榜单热门视频
阅读下一篇视频推荐怎么用java做个增删改查的功能_百度知道
怎么用java做个增删改查的功能
我有更好的答案
html?oldq=1" target="_blank">http://zhidao.baidu.com/question/5646419://zhidao.baidu.com/question/5646419:<a href="http其实我写个一个类似的参考
增删改查的功能要用到数据库 。
意思是要自己写个数据库吗。。。具体要求是什么?
为您推荐:
其他类似问题
java的相关知识
&#xe675;换一换
回答问题,赢新手礼包&#xe6b9;
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。java除了增删改查还能干什么? - ITeye问答
java除了写增删改查,还能干什么啊?自己写了多半年的增删改查,感觉java除了写增删改查也写不出什么了,现在又要找工作,感觉很迷惑。求解惑!!
采纳的答案
换个工作吧,增删改查也就是最基础的东西,编程最大的价值在于实现有价值的思想:)
跟语言没有关系,用java比较多只是因为java学习和使用相对简单
现在Java的需求这么火爆,说明它可以做很多事情,至于你只知道这点,说明你的见识还很短浅。
送你一句话:路漫漫而修远,吾将上下而求索。
增删改查是数据库的操作,java本身是一门编程语言,在操作数据库时能够实现对数据库的增删改查就可以了。当然java在很多方面都有应用,比如说android,java主要实现的就不是增删改查,是手机页面的展示。再比如网络交互中,java实现了 对话通道的连接和通信。作为一门高级语言java的应用非常广泛,当在特定的环境下,只体现了他的一个很小的部分。增删改查针对具体需求,其实也有很多可以研究和优化的地方。
现在基本上web应用主要就是增删改查,但这也是有学问的,比如增删改就涉及到事务,查就涉及到缓存;要是分布式系统就很复杂了(服务化,数据库的水平拆分等)
增删改查是手段,不是目标,把视角放远一点,在业务和设计的层面来考虑问题。实现业务才能产生价值。java只是增删改查的想法和编程只是敲键盘的想法差不多
楼主,关键不是Java能干吗,而是你想做什么,会做什么。做自己有兴趣的事,就会发现Java可以在工作中给予你很大的帮助。不要局限于目前的写代码,而是自己所做过的项目给予你的成就感和自信,你的目标不是在Java上而是在自信学到了什么,如果增删改查只是你目前能发现的话,我只能说楼主你落伍了。
你应该问问自己,除了增删改查还能干什么,而不是问Java。
可以做一切你想做的事情!!!
我只能说,你有这样的想法 ,是因为你用那些现成的框架用多了,而你却没有对使用的框架有了解。一旦你了解了,你就不会这么说了。另外,建议多到一些技术论坛上去看看,增长见识!
增删改查是基本的&& Java不仅是一门语言& 更是一门艺术!
做爬虫(heritrix)
做个文档搜索引擎(lucene+solr)
做应用程序 做客户端(SWT)
设计RESTful的web API(CXF springMVC Play2)
安卓应用开发
还有挺多的..不举了
java 不仅可以进行bs、cs开发,还可以做嵌入式,全文检索,大数据管理,网络走索引擎编写,手机系统。。等等的 播放器啦 游戏啦。。。增删改 这是基本。。楼主 成长空间巨大!
现在java程序员一抓一把,但是很多都是ssh的后台悍将,写多了,自然就觉得java的东西不过如此,此时不妨改变一下自己的方向,转型前台,你会发现,前台也很有意思
我看楼主被我们批的都要自杀了
Java辅以一定的手段,几乎能干其他语言能干的任何事情。
把增删改查作为模板,编写代码生成器,每个项目直接生成相关的代码结构,那就不是码农了,那是程序员!
大数据,游戏,嵌入式,人工智能
语言只是工具,就如同英语,你能用她干你想干的任何事情,诸如唱歌、谈判、谈情等,所以JAVA同样,能干好多事情,如中间件(tomcat)、游戏等
其实,在实现我们工作中的CURD之后,楼主可以再关注一些Java虚拟机(JVM),Java中的并发框架的实现,Java中的Collections框架,垃圾收集等等,此处由于JVM其实并不是单单和JAVA语言绑定,在JVM之上的语言如今已经很多了,可以了解下这些JVM上的动态语言,等等。希望可以帮到你。
1、首先java 是一种开发语言,绝不仅限于crud
2、java的优势在于他的面向对象思想,开发上手快;可以跨平台,不想vb、c#等局限于微软平台;最大的优势在于他的J2EE应用。
可以去看看java的百度百科。
java只是一种开发工具,其它语言能干的事情java基本都能干,像你说的操作表的增删改查,这只是对表内数据的操作,特别注意的是现在很多企业级、高信息安全要求、高跨平台要求的功能一般都采用j2ee实现,这就是java的一次编写,到处运行的特性。
现在通过网络做的事情几乎都是增删改查,银行查询、转账系统,手机计费系统、OA系统、HR系统、股票交易系统、发微博看微博、刷朋友圏、百度查信息、发贴、网购、新闻门户、上班打卡、刷公交卡。。。这些系统的本质都是对数据的增删改查。
Java可以干一切事情。其它语言能干的Java都可以干。
你平时估计一直在写信息管理系统,与数据库相关的增删改查代码,这只是Java里有JavaEE部分,还有其它的部分。增删改查也只是JavaEE里常见的一小块而已。
Eclipse、Spring/Hibernate/Struts、EJB、JSF、Tomcat、Log4J、jDOM、JXL、Maven等全都是用Java写的。它们几乎没有增删改查。
java不只是增删改查,它主要是可以跨多语言!
所有的软件最后不都体现为增查删改吗
增删改查& 只是过程,但绝不是 目标!
去专注一些 核心的东西吧,诸如算法。
java的作用可大了, 夸平台什么的。
增删改查 还是多看看现在orm优秀框架处理这些吧
你看下这个就大开眼界了。
java能做的事情多得很,开源项目成千上万,每天学一个,学到死都学不完。
比如你现在做的web开发。
还能做游戏。
实用的比如你可以写个程序自动抢火车票,(httpclient)
自己写个安卓游戏自己玩。(android)
高级的做数据库(oracle是用java写的),分布式系统(hadoop),服务器(tomcat)
。。。。。。
java能干的事多得去了,只不过你不会用。安桌不就是java写的,
当你说出“java除了写增删改查,还能干什么啊”就已经表明你是一个真正的码农。
已解决问题
未解决问题帐号:密码:下次自动登录{url:/nForum/slist.json?uid=guest&root=list-section}{url:/nForum/nlist.json?uid=guest&root=list-section}
贴数:1&分页:洗衣粉发信人: canper (洗衣粉), 信区: Java
标&&题: [合集] 不如这样吧,同学们每个人写一个增删改查的整体程序
发信站: 水木社区 (Thu Dec 24 18:50:38 2009), 站内 && ☆─────────────────────────────────────☆ &&
kobe2000 (活着,仅此而已) 于
(Thu Dec 24 11:18:20 2009)
提到: && 只有一个实体:新闻
字段有 标题 作者 内容 时间
页面有 列表 单个 编辑 新建 (编辑新建可以复用) && 用你们自己的惯用技术,没有任何限制,如何? &&&&&& ☆─────────────────────────────────────☆ &&
zms (小美) 于
(Thu Dec 24 11:21:09 2009)
提到: && 有个东西叫
基本上不需要动键盘,只要动鼠标即可
还有&&phpmaker,aspmaker 是一家的 && 我还用过,连数据库建模都包办的系统 && 【 在 kobe2000 (活着,仅此而已) 的大作中提到: 】
: 只有一个实体:新闻
: 字段有 标题 作者 内容 时间
: 页面有 列表 单个 编辑 新建 (编辑新建可以复用)
: ...................
&&&&&& ☆─────────────────────────────────────☆ &&
kobe2000 (活着,仅此而已) 于
(Thu Dec 24 11:22:35 2009)
提到: && 囧,那还不如找个crm呢
我只是举个简单的例子,看看大家平常的作法都是什么样子的 && 【 在 zms (小美) 的大作中提到: 】
: 有个东西叫
: jspmaker
: 基本上不需要动键盘,只要动鼠标即可
: ...................
&&&&&& ☆─────────────────────────────────────☆ &&
SCALONG (瓜牛) 于
(Thu Dec 24 11:23:17 2009)
提到: && 写程序不如写设计, && 【 在 kobe2000 (活着,仅此而已) 的大作中提到: 】
: 只有一个实体:新闻
: 字段有 标题 作者 内容 时间
: 页面有 列表 单个 编辑 新建 (编辑新建可以复用)
: ...................
&&&&&& ☆─────────────────────────────────────☆ &&
canper (洗衣粉) 于
(Thu Dec 24 11:23:58 2009)
提到: &&&&&& 时间是新建的时间还是,录入的?
【 在 kobe2000 (活着,仅此而已) 的大作中提到: 】
: 囧,那还不如找个crm呢
: 我只是举个简单的例子,看看大家平常的作法都是什么样子的
&&&&&&&& ☆─────────────────────────────────────☆ &&
kobe2000 (活着,仅此而已) 于
(Thu Dec 24 11:24:42 2009)
提到: && 录入的
【 在 canper (洗衣粉) 的大作中提到: 】
:&& 时间是新建的时间还是,录入的?
&&&&&&&& ☆─────────────────────────────────────☆ &&
canper (洗衣粉) 于
(Thu Dec 24 11:35:08 2009)
提到: &&&&&&我写一个,不过这种写法目前还在实验阶段 &&&&&&@Entity(table="xxxxx",keys="newsId") &&&&public class News &&&&{ &&&&&&&&@Generatable(length=12) &&&&&&&&private String newsId; &&&&&&&&&&@Require &&&&&&&&private S &&&&&&&&&&private S &&&&&&&&&&private S &&&&&&&&&&private D &&&&&&&&&&..... &&&&} &&&&&&@Service(url="/NewsCrud") &&&&public class NewsCrud extends BaseNormalCrud&News,String& &&&&{ &&&&&& @Like &&&&&& private S &&&&&&&& //getter setter for title &&&&&&&& @Override &&&&&& protected Object createListView() throws Exception &&&&&& { &&&&&&&&&&PageTableView view = new PageTableView(true); &&&&&&&&&&&&view.addComponent("标题", "title"); &&&&&&&&&&&&view.addColumn("标题", "title"); &&&&&&&&&&view.addColumn("作者", "author"); &&&&&&&&&&view.addColumn("时间", "time"); &&&&&&&&&&&&view.defaultInit(); &&&&&&&&&&view.addButton(Buttons.export("xls")); &&&&&&&&&&&& &&&&&& } &&&&&&&& @Override &&&&&& protected Object createShowView() throws Exception &&&&&& { &&&&&&&&&&SimpleDialogView view = new SimpleDialogView(); &&&&&&&&&&&&view.addComponent("标题", "title"); &&&&&&&&&&view.addComponent("作者", "author"); &&&&&&&&&&view.addComponent("时间", "time"); &&&&&&&&&&view.addComponent("内容", new CTextArea("content")); &&&&&&&&&&&&view.addDefaultButtons(); &&&&&&&&&& &&&&&& } &&&&&&&& @Override &&&&&& protected ExportParameters getExportParameters() throws Exception &&&&&& { &&&&&&&&&&return new ExportParameters("新闻列表"); &&&&&& } &&&&} &&&&&&//以下是系统共用的页面 &&&&&&//list.ptl &&&&&html& &&&&&head& &&&&&& &title bind="view.title"&&/title& &&&&&& &script type="text/javascript" src="/platform/commons/crud.js"&&/script& &&&&&/head& &&&&&body& &&&&&&&div bind="view.header"&&/div& &&&&&&&div id="pageBody"& &&&&&&&& &div bind="view.title" id="app_title"&&/div& &&&&&&&& &div bind="view.remark" id="app_remark"&&/div& &&&&&&&&&& &div id="components" bind="view.components!=null"& &&&&&&&&&&&& &span bind="view.components"& &&&&&&&&&&&&&&&& ${self.display()} &&&&&&&&&&&& &/span& &&&&&&&& &/div& &&&&&&&& &div id="moreComponents" bind="view.moreComponents!=null"& &&&&&&&&&&&& &span bind="view.moreComponents"& &&&&&&&&&&&&&&&& ${self.display()} &&&&&&&&&&&& &/span& &&&&&&&& &/div& &&&&&&&& &div id="buttons" bind="view.buttons!=null"& &&&&&&&&&&&& &span bind="view.buttons"& &&&&&&&&&&&&&&&& ${self.display()} &&&&&&&&&&&& &/span& &&&&&&&& &/div& &&&&&&&&&& &div id="mainBody" bind="view"& &&&&&&&& &/div& &&&&&&&& &/div& && &/body& && &/html& && && //edit.ptl && &html& && &head& &&&& &title bind="view.title"&&/title& &&&& &script type="text/javascript" src="/platform/commons/crud.js"&&/script& &&&& &script type="text/javascript" src="/cyan/client/validate.js"&&/script& && &/head& && &body id="dialogBody"& &&&& &div bind="view.header"&&/div& &&&&&& &form action=""& &&&&&&&& &span bind="view.hiddens"& &&&&&&&&&&&& &input type="hidden" name="${self}"&&&&&&&&&&& &/span& &&&&&&&& &div id="components"& &&&&&&&&&&&& &div class="component_item" bind="view.components"& &&&&&&&&&&&&&&&& &div bind="label" class="label"&&/div& &&&&&&&&&&&&&&&& &div bind="component" class="component"& &&&&&&&&&&&&&&&&&&&& ${self.display(entity,'entity')} &&&&&&&&&&&&&&&& &/div& &&&&&&&&&&&& &/div& &&&&&&&& &/div& &&&&&&&& &div id="buttons"& &&&&&&&&&&&&&&&& &span bind="view.buttons" class="button"& &&&&&&&&&&&&&&&&&&&& ${self.display()} &&&&&&&&&&&&&&&& &/span& &&&&&&&& &/div& &&&&&&&/form& && &/body& && &/html& &&&& //若干布局的css和js略 && 【 在 kobe2000 (活着,仅此而已) 的大作中提到: 】
: 只有一个实体:新闻
: 字段有 标题 作者 内容 时间
: 页面有 列表 单个 编辑 新建 (编辑新建可以复用)
: ...................
&&&&&& ☆─────────────────────────────────────☆ &&
sayinger (言者) 于
(Thu Dec 24 11:38:10 2009)
提到: && 恩,快赶上webform了 && 【 在 canper (洗衣粉) 的大作中提到: 】
:&&我写一个,不过这种写法目前还在实验阶段
:&&&&@Entity(table="xxxxx",keys="newsId")
:&&&&public class News
: ...................
&&&&&& ☆─────────────────────────────────────☆ &&
kabbesy (Arthas) 于
(Thu Dec 24 11:46:19 2009)
提到: && 来个我的吧
直接贴个现成的
带有全部的实体缓存和查询缓存 && 如果不考虑高性能缓存的话
service完成普通的sql查询基本上一分钟一个功能就行了 && model
================
@Table(appliesTo = "Classe", indexes = { &&&&&&&& @Index(name = "school", columnNames = {"school", "grade", "number"})
public class Classe extends ExtIntModel { &&&&&& @Min(value = 0, message = "班级所属学校必须指定") &&&& int school = -1; &&&& @Min(value = 1900, message = "班级入学年份必须指定") &&&& int grade = 1899; &&&& @NotNull(message = "班号不能为空") &&&& S &&&&&& @NotNull(message = "请指定个性班名") &&&& S &&&& String headT &&&&&&&&&& int teacherC &&&& int studentC &&&& int familyC &&&&&& Date createT &&&& String createU &&&& String updateU &&&&&& public Classe() { &&&& } &&&&&& public Classe(int school, int grade, String number, String name) { &&&&&&&& this.school = &&&&&&&& this.grade = &&&&&&&& this.number = &&&&&&&& this.name = &&&& } &&&&&& @Override &&&& public void preUpdate() { &&&&&&&& super.preUpdate(); &&&&&&&& this.updateUser = UserContext.getCurrentUserId(); &&&& } &&&&&& @Override &&&& public void preInsert() { &&&&&&&& super.preInsert(); &&&&&&&& this.createTime = new Date(); &&&&&&&& this.createUser = UserContext.getCurrentUserId(); &&&&&&&& this.updateUser = UserContext.getCurrentUserId(); &&&& }&&&&
} && 以下都是getter setter
dao && @Service
public class ClasseDao extends EntityDao&Integer,Classe& { &&&&&& public ClasseDao() { &&&&&&&& super(Classe.class); &&&& } &&&&&& @Resource(name = "xingJdbcDao") &&&& @Override &&&& public void setJdbcDao(JdbcDao jdbcDao) { &&&&&&&& super.setJdbcDao(jdbcDao); &&&& } && 没了
===========
service && @SuppressWarnings({"unchecked"})
public class ClasseService extends CacheableEntityService&Integer, Classe, ClasseDao& { &&&&&& @Resource &&&& @Override &&&& public void setEntityDao(ClasseDao classeDao) { &&&&&&&& super.setEntityDao(classeDao); &&&& } &&&&&& @Resource &&&& @Override &&&& public void setCacheService(CacheService cacheService) { &&&&&&&& super.setCacheService(cacheService); &&&& } &&&&&& public Page&Classe& findClasse(String school, int grade, int pageNumber, int pageSize) { &&&&&&&& FindClasseAction action = getFindClasseAction(school, grade, pageNumber, pageSize); &&&&&&&& return new RollPage&Classe&(pageNumber, pageSize, action.getModels()); &&&& } &&&&&& public FindClasseAction getFindClasseAction(String school, int grade, int pageNumber, int pageSize) { &&&&&&&& return super.getQueryAction(FindClasseAction.class, school, grade, pageNumber, pageSize); &&&& } &&&&&& public static class FindClasseAction extends PagingCacheAction { &&&&&&&& @Override &&&&&&&& protected void preparePaging() { &&&&&&&&&&&& Validate.isTrue(params.length == 4); &&&&&&&&&&&& String school = (String) params[0]; &&&&&&&&&&&& int grade = (Integer) params[1]; &&&&&&&&&&&& int pageNumber = (Integer) params[2]; &&&&&&&&&&&& int pageSize = (Integer) params[3]; &&&&&&&&&&&&&& sql.append("1=1"); &&&&&&&&&&&& sqlParams = new ArrayList(); &&&&&&&&&&&& SQLHelper.appendEqual(sql, sqlParams, "school", school); &&&&&&&&&&&& SQLHelper.appendEqual(sql, sqlParams, "grade", grade); &&&&&&&&&&&& sql.append(" order by id asc"); &&&&&&&&&&&& sql.append(SQLHelper.pagingClause(pageNumber, pageSize)); &&&&&&&& } &&&&&&&&&& @Override &&&&&&&& protected void prepareSQL() { &&&&&&&&&&&& pageNumber = (Integer) params[2]; &&&&&&&&&&&& pageSize = (Integer) params[3]; &&&&&&&& } &&&& }
} &&&&&&&&&&&& 【 在 kobe2000 (活着,仅此而已) 的大作中提到: 】
: 标&&题: 不如这样吧,同学们每个人写一个增删改查的整体程序
: 发信站: 水木社区 (Thu Dec 24 11:18:20 2009), 站内
: 只有一个实体:新闻
: 字段有 标题 作者 内容 时间
: 页面有 列表 单个 编辑 新建 (编辑新建可以复用)
: 用你们自己的惯用技术,没有任何限制,如何?
:&&&&好品质,我信赖WebWheel。
:&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&www.webwheel.cn
:&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& Java Web Framework
: ※ 来源:·水木社区 newsmth.net·[FROM: 123.127.65.*]
&&&&&&&& ☆─────────────────────────────────────☆ &&
canper (洗衣粉) 于
(Thu Dec 24 11:48:38 2009)
提到: &&&&&&页面呢?
【 在 kabbesy (Arthas) 的大作中提到: 】
: 来个我的吧
: 直接贴个现成的
: 带有全部的实体缓存和查询缓存
: ...................
&&&&&& ☆─────────────────────────────────────☆ &&
kabbesy (Arthas) 于
(Thu Dec 24 11:49:47 2009)
提到: && 页面用啥都行,jsp、jsp2.0,freemarker……
反正mvc用springmvc && 我自己的htemplate?&& 我觉得还可以,但是不支持的el调用,太不爽了
正在等某帅哥的大作 &&&& 【 在 canper (洗衣粉) 的大作中提到: 】
:&&页面呢?
&&&&&&&& ☆─────────────────────────────────────☆ &&
canper (洗衣粉) 于
(Thu Dec 24 11:54:17 2009)
提到: &&&&&&没有action么? &&&& 呵呵,crud的话我压根底不用写dao和service
【 在 kabbesy (Arthas) 的大作中提到: 】
: 以我这种200apm的手速,拿idea操作出来刚才的代码,也就30秒不到
: 当然了,不包括model
: ...................
&&&&&& ☆─────────────────────────────────────☆ &&
kabbesy (Arthas) 于
(Thu Dec 24 11:55:00 2009)
提到: && 肯定得有action啊 && 那个没啥意思,就不贴了 && 【 在 canper (洗衣粉) 的大作中提到: 】
:&&没有action么?
:&& 呵呵,crud的话我压根底不用写dao和service
&&&&&&&& ☆─────────────────────────────────────☆ &&
dvaknheo (未来人 宇宙人 超能力者) 于
(Thu Dec 24 12:01:03 2009)
提到: && 我说 我自己写的 tagfeather 是世界上最好的,但没人信。
xslt 的优化版。
页面没人设计的时候可以用,页面有人设计的时候也可以用。 &&&& 哦,发现有一年的功夫,没有把他完善了。
下载代码回去的都不知道怎么跑起来(其实就少了个 cache 的文件夹)
【 在 kabbesy (Arthas) 的大作中提到: 】
: 页面用啥都行,jsp、jsp2.0,freemarker……
: 反正mvc用springmvc
: 我自己的htemplate?&&
: ...................
&&&&&& ☆─────────────────────────────────────☆ &&
dvaknheo (未来人 宇宙人 超能力者) 于
(Thu Dec 24 12:03:49 2009)
提到: && 现在没有足够的时间和动力做 Java 版,本来去年这个时候我开始了 java 版的。
但是 jsp 的高级东西我就不会了 && 话说 jsp 里怎么搞 父类为空的类? 需要 hack tomcat 吧
【 在 kobe2000 (活着,仅此而已) 的大作中提到: 】
: 实践是检验真理的唯一标准, ^o^
&&&&&&&& ☆─────────────────────────────────────☆ &&
ROOT (admin) 于
(Thu Dec 24 12:05:18 2009)
提到: && 不代码生成其实就是把代码写在框架里
比如自动根据数据库结构产生表现层画面之类的 && 代码生成还能改,
写在框架里的,
要么复杂的开关变量
要么复杂的配置文件
复杂到一定程度连脚本都要上了
然后又回到编程老路上了 && 但代码生成维护麻烦
这要求我们做一个足够强劲的框架
以便减少代码生成数量 && 我理想中的框架
是即能够按照惯例优于配置
迅速开发常用需求的东西
又足够能访问底层,
能够开发系统中少数特殊的部分 &&&&&& 【 在 canper (洗衣粉) 的大作中提到: 】
:&&我bs代码生成
&&&&&&&& ☆─────────────────────────────────────☆ &&
ihomd (ihomd) 于
(Thu Dec 24 12:07:29 2009)
提到: &&&& 【 在 ROOT (admin) 的大作中提到: 】
: 标&&题: Re: 不如这样吧,同学们每个人写一个增删改查的整体程序
: 发信站: 水木社区 (Thu Dec 24 12:05:18 2009), 站内
: 不代码生成其实就是把代码写在框架里
: 比如自动根据数据库结构产生表现层画面之类的
: 代码生成还能改,
: 写在框架里的,
: 要么复杂的开关变量
: 要么复杂的配置文件
: 复杂到一定程度连脚本都要上了
: 然后又回到编程老路上了
: 但代码生成维护麻烦
: 这要求我们做一个足够强劲的框架
: 以便减少代码生成数量
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~为什么要这样?代码生成你还担心机子受不了么?
: 我理想中的框架
: 是即能够按照惯例优于配置
: 迅速开发常用需求的东西
: 又足够能访问底层,
: 能够开发系统中少数特殊的部分
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~所有的这些和代码生成没有半点冲突,
: 【 在 canper (洗衣粉) 的大作中提到: 】
: :&&我bs代码生成
: 贫僧观股市低迷时,尘世间无数股民套于水深火热之中,不禁动恻隐之心,尽
: 己之所能吃进股票,助其解套,以图善事。其后股市高昂,众人抢购不已。贫僧忙将股票售
: 出,希望能让众股民遂愿购得。多年下来竟然获利极丰,此乃佛祖明察,善有善报者也。
: ※ 来源:·水木社区 newsmth.net·[FROM: 159.226.128.*]
&&&&&&&& ☆─────────────────────────────────────☆ &&
oldwatch (一条叫java的鱼◎潜心修炼待化龙) 于
(Thu Dec 24 12:07:38 2009)
提到: && 代码生成后改是容易 && 但是要把改动和之后的代码重生成协调可就难了 && 【 在 ROOT (admin) 的大作中提到: 】
: 不代码生成其实就是把代码写在框架里
: 比如自动根据数据库结构产生表现层画面之类的
: 代码生成还能改,
: ...................
&&&&&& ☆─────────────────────────────────────☆ &&
kabbesy (Arthas) 于
(Thu Dec 24 12:08:40 2009)
提到: && 最好的是健壮的框架
可扩展的框架
简化的配置 && 然后把页面这种量大且不好反向工程的东东
拿出来做页面生成 && 【 在 ROOT (admin) 的大作中提到: 】
: 标&&题: Re: 不如这样吧,同学们每个人写一个增删改查的整体程序
: 发信站: 水木社区 (Thu Dec 24 12:05:18 2009), 站内
: 不代码生成其实就是把代码写在框架里
: 比如自动根据数据库结构产生表现层画面之类的
: 代码生成还能改,
: 写在框架里的,
: 要么复杂的开关变量
: 要么复杂的配置文件
: 复杂到一定程度连脚本都要上了
: 然后又回到编程老路上了
: 但代码生成维护麻烦
: 这要求我们做一个足够强劲的框架
: 以便减少代码生成数量
: 我理想中的框架
: 是即能够按照惯例优于配置
: 迅速开发常用需求的东西
: 又足够能访问底层,
: 能够开发系统中少数特殊的部分
: 【 在 canper (洗衣粉) 的大作中提到: 】
: :&&我bs代码生成
: 贫僧观股市低迷时,尘世间无数股民套于水深火热之中,不禁动恻隐之心,尽
: 己之所能吃进股票,助其解套,以图善事。其后股市高昂,众人抢购不已。贫僧忙将股票售
: 出,希望能让众股民遂愿购得。多年下来竟然获利极丰,此乃佛祖明察,善有善报者也。
: ※ 来源:·水木社区 newsmth.net·[FROM: 159.226.128.*]
&&&&&&&& ☆─────────────────────────────────────☆ &&
ihomd (ihomd) 于
(Thu Dec 24 12:09:05 2009)
提到: && 这个不就是架构师干的活么,
我看这个比性能分析什么的难不了多少
【 在 oldwatch (一条叫java的鱼◎潜心修炼待化龙) 的大作中提到: 】
: 代码生成后改是容易
: 但是要把改动和之后的代码重生成协调可就难了
&&&&&&&& ☆─────────────────────────────────────☆ &&
ROOT (admin) 于
(Thu Dec 24 12:09:40 2009)
提到: &&&& 【 在 ihomd (ihomd) 的大作中提到: 】
: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~为什么要这样?代码生成你还担心机子受不了么?
生成的量多维护麻烦
而且改动后和再次代码生成(比如加一个字段)如何协调一直是代码生成的顽疾 &&&& : ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~所有的这些和代码生成没有半点冲突,
&&&&&&&& ☆─────────────────────────────────────☆ &&
oldwatch (一条叫java的鱼◎潜心修炼待化龙) 于
(Thu Dec 24 12:10:47 2009)
提到: && en,就是M$从VB肇始的拖拖放放改改属性 && UI大概是最适合代码生成的部分了,任何实现都不方便见人,不如直接藏在IDE后面 && 【 在 kabbesy (Arthas) 的大作中提到: 】
: 最好的是健壮的框架
: 可扩展的框架
: 简化的配置
: ...................
&&&&&& ☆─────────────────────────────────────☆ &&
oldwatch (一条叫java的鱼◎潜心修炼待化龙) 于
(Thu Dec 24 12:11:41 2009)
提到: && 啧啧,说的真是容易 && 这个严格说来是代码自动更新,你去看看现在台面上有哪家能支持的? && 【 在 ihomd (ihomd) 的大作中提到: 】
: 这个不就是架构师干的活么,
: 我看这个比性能分析什么的难不了多少
&&&&&&&& ☆─────────────────────────────────────☆ &&
ihomd (ihomd) 于
(Thu Dec 24 12:13:36 2009)
提到: && 不能因噎废食,
维护几个模版不是很简单的事么。。。我自己的代码生成框架生成10几个文件,我觉得比以前我没代码生成框架的时候维护起来简单不知多少倍 && 第二个也就这阳的,如果没代码生成框架,加一个字段,该一个字段都能麻烦死,现在有了代码生成,简单了。而且我们java还有重构功能,直接先重构改名一下,再做代码生成,搞定。
这就是为什么我不愿意用js而尽力想actionscript靠拢的原因之一,flashbuilder慢慢支持部分重构功能了。 && 【 在 ROOT (admin) 的大作中提到: 】
: 标&&题: Re: 不如这样吧,同学们每个人写一个增删改查的整体程序
: 发信站: 水木社区 (Thu Dec 24 12:09:40 2009), 站内
: 【 在 ihomd (ihomd) 的大作中提到: 】
: : ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~为什么要这样?代码生成你还担心机子受不了么?
: 生成的量多维护麻烦
: 而且改动后和再次代码生成(比如加一个字段)如何协调一直是代码生成的顽疾
: : ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~所有的这些和代码生成没有半点冲突,
: 贫僧观股市低迷时,尘世间无数股民套于水深火热之中,不禁动恻隐之心,尽
: 己之所能吃进股票,助其解套,以图善事。其后股市高昂,众人抢购不已。贫僧忙将股票售
: 出,希望能让众股民遂愿购得。多年下来竟然获利极丰,此乃佛祖明察,善有善报者也。
: ※ 来源:·水木社区 newsmth.net·[FROM: 159.226.128.*]
&&&&&&&& ☆─────────────────────────────────────☆ &&
ROOT (admin) 于
(Thu Dec 24 12:13:46 2009)
提到: && 所以说好的框架能取代或减少代码生成数量 && 比如swing ui布局我宁愿用jgoodies手写的 && 【 在 oldwatch (一条叫java的鱼◎潜心修炼待化龙) 的大作中提到: 】
: en,就是M$从VB肇始的拖拖放放改改属性
: UI大概是最适合代码生成的部分了,任何实现都不方便见人,不如直接藏在IDE后面
&&&&&&&& ☆─────────────────────────────────────☆ &&
ihomd (ihomd) 于
(Thu Dec 24 12:14:57 2009)
提到: && 你仔细说说“代码自动更新”,我倒要看看这里的问题能否说明没代码生成比代码生成还要好
【 在 oldwatch (一条叫java的鱼◎潜心修炼待化龙) 的大作中提到: 】
: 啧啧,说的真是容易
: 这个严格说来是代码自动更新,你去看看现在台面上有哪家能支持的?
&&&&&&&& ☆─────────────────────────────────────☆ &&
kabbesy (Arthas) 于
(Thu Dec 24 12:15:00 2009)
提到: && idea的js编辑器一样支持重构哦 && 【 在 ihomd (ihomd) 的大作中提到: 】
: 标&&题: Re: 不如这样吧,同学们每个人写一个增删改查的整体程序
: 发信站: 水木社区 (Thu Dec 24 12:13:36 2009), 站内
: 不能因噎废食,
: 维护几个模版不是很简单的事么。。。我自己的代码生成框架生成10几个文件,我觉得比以前我没代码生成框架的时候维护起来简单不知多少倍
: 第二个也就这阳的,如果没代码生成框架,加一个字段,该一个字段都能麻烦死,现在有了代码生成,简单了。而且我们java还有重构功能,直接先重构改名一下,再做代码生成,搞定。
: 这就是为什么我不愿意用js而尽力想actionscript靠拢的原因之一,flashbuilder慢慢支持部分重构功能了。
: 【 在 ROOT (admin) 的大作中提到: 】
: : 标&&题: Re: 不如这样吧,同学们每个人写一个增删改查的整体程序
: : 发信站: 水木社区 (Thu Dec 24 12:09:40 2009), 站内
: : 【 在 ihomd (ihomd) 的大作中提到: 】
: : : ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~为什么要这样?代码生成你还担心机子受不了么?
: : 生成的量多维护麻烦
: : 而且改动后和再次代码生成(比如加一个字段)如何协调一直是代码生成的顽疾
: : : ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~所有的这些和代码生成没有半点冲突,
: : 贫僧观股市低迷时,尘世间无数股民套于水深火热之中,不禁动恻隐之心,尽
: : 己之所能吃进股票,助其解套,以图善事。其后股市高昂,众人抢购不已。贫僧忙将股票售
: : 出,希望能让众股民遂愿购得。多年下来竟然获利极丰,此乃佛祖明察,善有善报者也。
: : ※ 来源:·水木社区 newsmth.net·[FROM: 159.226.128.*]
: Richard Jefferson | 24
: Position:&&F&&&&&&&&&& Born: 06/21/80&&&&&&&&&&&&Height: 6-7 /&&2,01
: Weight: 222&&lbs. / 100,7&&kg.&&&&&&&&&&&&&&&&&& College: Arizona '01
: 01-02 NJN 79 9&&24.3 .457 .232 .713 1.10 2.60 3.70 1.8&&.81 .61 1.35 2.70 9.4
: 02-03 NJN 80 80 36.0 .501 .250 .743 1.90 4.60 6.40 2.5 1.00 .55 1.95 2.70 15.5
: 03-04 NJN 82 82 38.2 .498 .364 .763 1.30 4.30 5.70 3.8 1.12 .34 2.41 2.70 18.5
: ※ 来源:·水木社区 newsmth.net·[FROM: 113.90.15.*]
&&&&&&&& ☆─────────────────────────────────────☆ &&
ROOT (admin) 于
(Thu Dec 24 12:15:53 2009)
提到: && 你的意思是全部重新生成 && 但是有时候
是你在生成代码上做了些特殊改动(如果没有的话,系统也太简单了点)
然后又加一个字段的
这种情况怎么办 &&&&&& 【 在 ihomd (ihomd) 的大作中提到: 】
: 不能因噎废食,
: 维护几个模版不是很简单的事么。。。我自己的代码生成框架生成10几个文件,我觉得比以前我没代码生成框架的时候维护起来简单不知多少倍
: 第二个也就这阳的,如果没代码生成框架,加一个字段,该一个字段都能麻烦死,现在有了代码生成,简单了。而且我们java还有重构功能,直接先重构改名一下,再做代码生成,搞定。
: ...................
&&&&&& ☆─────────────────────────────────────☆ &&
oldwatch (一条叫java的鱼◎潜心修炼待化龙) 于
(Thu Dec 24 12:15:57 2009)
提到: && 我一直觉得UI天生就该是拖拖放放改改属性的
管它后台究竟是用啥描述的 && 【 在 ROOT (admin) 的大作中提到: 】
: 所以说好的框架能取代或减少代码生成数量
: 比如swing ui布局我宁愿用jgoodies手写的
&&&&&&&& ☆─────────────────────────────────────☆ &&
ROOT (admin) 于
(Thu Dec 24 12:16:31 2009)
提到: && 动态类型支持重构
idea太神奇了 && 【 在 kabbesy (Arthas) 的大作中提到: 】
: idea的js编辑器一样支持重构哦
&&&&&&&& ☆─────────────────────────────────────☆ &&
dvaknheo (未来人 宇宙人 超能力者) 于
(Thu Dec 24 12:16:46 2009)
提到: && 很简单一个例子:
本来开心农场只能记录最后偷菜的是谁
现在我们要做个快乐农场, 要记录所有偷菜的人。
这个怎么搞吧?
【 在 ROOT (admin) 的大作中提到: 】
: 你的意思是全部重新生成
: 但是有时候
: 是你在生成代码上做了些特殊改动(如果没有的话,系统也太简单了点)
: ...................
&&&&&& ☆─────────────────────────────────────☆ &&
kobe2000 (活着,仅此而已) 于
(Thu Dec 24 12:17:19 2009)
提到: && 这里有个悖论
生成之后无论多长时间都不用手动改,那这个生成肯定被隐藏掉
如果需要手动改,那么这生成也只能进行一次,也就只是一个项目模板的功能了 && 【 在 ihomd (ihomd) 的大作中提到: 】
: 不能因噎废食,
: 维护几个模版不是很简单的事么。。。我自己的代码生成框架生成10几个文件,我觉得比以前我没代码生成框架的时候维护起来简单不知多少倍
: 第二个也就这阳的,如果没代码生成框架,加一个字段,该一个字段都能麻烦死,现在有了代码生成,简单了。而且我们java还有重构功能,直接先重构改名一下,再做代码生成,搞定。
: ...................
&&&&&& ☆─────────────────────────────────────☆ &&
ihomd (ihomd) 于
(Thu Dec 24 12:17:44 2009)
提到: && 这就是架构师必须考虑的,
代码生成当然得支持生成代码的扩展。
【 在 ROOT (admin) 的大作中提到: 】
: 你的意思是全部重新生成
: 但是有时候
: 是你在生成代码上做了些特殊改动(如果没有的话,系统也太简单了点)
: ...................
&&&&&& ☆─────────────────────────────────────☆ &&
kobe2000 (活着,仅此而已) 于
(Thu Dec 24 12:19:09 2009)
提到: && 改改字符串,引入变量啥的小重构,但是非常实用 && 【 在 ROOT (admin) 的大作中提到: 】
: 动态类型支持重构
: idea太神奇了
: ...................
&&&&&& ☆─────────────────────────────────────☆ &&
oldwatch (一条叫java的鱼◎潜心修炼待化龙) 于
(Thu Dec 24 12:19:31 2009)
提到: && 说的真轻巧啊,你仔细想想这里头需要代码生成引擎做多少语法分析? && 我深切怀疑这个弄不好是停机问题 && 【 在 ihomd (ihomd) 的大作中提到: 】
: 这就是架构师必须考虑的,
: 代码生成当然得支持生成代码的扩展。
&&&&&&&& ☆─────────────────────────────────────☆ &&
ihomd (ihomd) 于
(Thu Dec 24 12:19:51 2009)
提到: && 。。。代码生成框架生成的代码肯定不是不能改的,这个是代码生成框架的第一要义吧?
然后你可以继承生成的类啊,或者配置啊,或者用接口啊,
你干吗改它
【 在 kobe2000 (活着,仅此而已) 的大作中提到: 】
: 这里有个悖论
: 生成之后无论多长时间都不用手动改,那这个生成肯定被隐藏掉
: 如果需要手动改,那么这生成也只能进行一次,也就只是一个项目模板的功能了
: ...................
&&&&&& ☆─────────────────────────────────────☆ &&
ihomd (ihomd) 于
(Thu Dec 24 12:20:49 2009)
提到: && 我当年在金蝶Eas呆过一段时间,他家的生成框架还成, && 【 在 ROOT (admin) 的大作中提到: 】
: 很难很难的
&&&&&&&& ☆─────────────────────────────────────☆ &&
oldwatch (一条叫java的鱼◎潜心修炼待化龙) 于
(Thu Dec 24 12:23:04 2009)
提到: && 继承可是很重量级的手段 && 【 在 ihomd (ihomd) 的大作中提到: 】
: 。。。代码生成框架生成的代码肯定不是不能改的,这个是代码生成框架的第一要义吧?
: 然后你可以继承生成的类啊,或者配置啊,或者用接口啊,
: 你干吗改它
: ...................
&&&&&& ☆─────────────────────────────────────☆ &&
ROOT (admin) 于
(Thu Dec 24 12:24:48 2009)
提到: && 我觉得不是所有问题都能用继承,配置,组合搞定的
否则也不用代码生成了
直接对框架继承,配置,组合就行了 && 说穿了,这就是个悖论 && 当然,的确是,不能因噎废食,
代码生成还是能大大降低工作量的 && 我只是倡导代码生成的背后,要有个足够灵活,强大的框架
而不是把希望寄托在代码生成上 &&&& 【 在 kobe2000 (活着,仅此而已) 的大作中提到: 】
: 哦,那我明白了,我们只是概念上出现了点偏差
&&&&&&&& ☆─────────────────────────────────────☆ &&
kobe2000 (活着,仅此而已) 于
(Thu Dec 24 12:26:33 2009)
提到: && 外包公司,mis项目啥的,估计都有这玩意吧,包含代码生成的框架
因为缺失大同小异 && 【 在 ROOT (admin) 的大作中提到: 】
: 我觉得不是所有问题都能用继承,配置,组合搞定的
: 否则也不用代码生成了
: 直接对框架继承,配置,组合就行了
: ...................
&&&&&& ☆─────────────────────────────────────☆ &&
oldwatch (一条叫java的鱼◎潜心修炼待化龙) 于
(Thu Dec 24 12:27:11 2009)
提到: && 话说我一直觉得与其做静态代码生成,不如弄个动态的脚本引擎 && 【 在 kobe2000 (活着,仅此而已) 的大作中提到: 】
: 外包公司,mis项目啥的,估计都有这玩意吧,包含代码生成的框架
: 因为缺失大同小异
&&&&&&&& ☆─────────────────────────────────────☆ &&
ROOT (admin) 于
(Thu Dec 24 12:27:59 2009)
提到: && 会弄得越来越复杂的 && 【 在 oldwatch (一条叫java的鱼◎潜心修炼待化龙) 的大作中提到: 】
: 话说我一直觉得与其做静态代码生成,不如弄个动态的脚本引擎
&&&&&&&& ☆─────────────────────────────────────☆ &&
ihomd (ihomd) 于
(Thu Dec 24 12:28:19 2009)
提到: && 他家的bos,一个现场实施人员(不是研发人员),那得基本上就是版本的刚入门水准了(甚至不会java)
就可以搞出单据,然后配出工作流。
金蝶以此将客户的定制需求直接在现场解决掉。 && 【 在 Luxifero (Luxifero) 的大作中提到: 】
:&&&&&&&& 具体说说看,有哪些别致或强大的地方
: 可能是技术团队更新换代或者客户的压力,有一点点不好的地方,
: 但是瑕不掩瑜,毕竟,我们学还是学人家好的方面。
: ...................
&&&&&& ☆─────────────────────────────────────☆ &&
Luxifero (Luxifero) 于
(Thu Dec 24 12:29:06 2009)
提到: &&&&&&&&&& 代码生成,也不一定非要是静态代码文件生成嘛,比如构建一个model,就能输出一个主子结构的单据什么的,这个也可以认为是代码生成嘛
【 在 oldwatch (一条叫java的鱼◎潜心修炼待化龙) 的大作中提到: 】
话说我一直觉得与其做静态代码生成,不如弄个动态的脚本引擎 && 【 在 kobe2000 (活着,仅此而已) 的大作中提到: 】
: 外包公司,mis项目啥的,估计都有这玩意吧,包含代码生成的框架
: 因为缺失大同小异
&&&&&&&& ☆─────────────────────────────────────☆ &&
oldwatch (一条叫java的鱼◎潜心修炼待化龙) 于
(Thu Dec 24 12:29:28 2009)
提到: && 估计这也就金蝶了 && 换成小作坊做乙方,九成可能是在现场被直接玩死 && 【 在 ihomd (ihomd) 的大作中提到: 】
: 他家的bos,一个现场实施人员(不是研发人员),那得基本上就是版本的刚入门水准了(甚至不会java)
: 就可以搞出单据,然后配出工作流。
: 金蝶以此将客户的定制需求直接在现场解决掉。
: ...................
&&&&&& ☆─────────────────────────────────────☆ &&
ROOT (admin) 于
(Thu Dec 24 12:29:50 2009)
提到: && 嗯,动态表单
很多系统都有
但只适合与一些简单结构 && 【 在 ihomd (ihomd) 的大作中提到: 】
: 他家的bos,一个现场实施人员(不是研发人员),那得基本上就是版本的刚入门水准了(甚至不会java)
: 就可以搞出单据,然后配出工作流。
: 金蝶以此将客户的定制需求直接在现场解决掉。
: ...................
&&&&&& ☆─────────────────────────────────────☆ &&
Luxifero (Luxifero) 于
(Thu Dec 24 12:30:07 2009)
提到: &&&&&&&&&& 哦,这个啊,基本上大点的像样点的厂商都有这种玩具
【 在 ihomd (ihomd) 的大作中提到: 】
他家的bos,一个现场实施人员(不是研发人员),那得基本上就是版本的刚入门水准了(甚至不会java)
就可以搞出单据,然后配出工作流。
金蝶以此将客户的定制需求直接在现场解决掉。 && 【 在 Luxifero (Luxifero) 的大作中提到: 】
:&&&&&&&& 具体说说看,有哪些别致或强大的地方
: 可能是技术团队更新换代或者客户的压力,有一点点不好的地方,
: 但是瑕不掩瑜,毕竟,我们学还是学人家好的方面。
: ...................
&&&&&& ☆─────────────────────────────────────☆ &&
ihomd (ihomd) 于
(Thu Dec 24 12:31:02 2009)
提到: && 且不说你这个缺少可扩展性。
动态脚本引擎,你解释的东西只存在于运行时,缺少静态的检查啊, && 【 在 oldwatch (一条叫java的鱼◎潜心修炼待化龙) 的大作中提到: 】
: 话说我一直觉得与其做静态代码生成,不如弄个动态的脚本引擎
&&&&&&&& ☆─────────────────────────────────────☆ &&
Luxifero (Luxifero) 于
(Thu Dec 24 12:31:04 2009)
提到: &&&&&&&&&& 用友金蝶浪潮作为乙方待遇不会比小作坊好多少
【 在 oldwatch (一条叫java的鱼◎潜心修炼待化龙) 的大作中提到: 】
估计这也就金蝶了 && 换成小作坊做乙方,九成可能是在现场被直接玩死 && 【 在 ihomd (ihomd) 的大作中提到: 】
: 他家的bos,一个现场实施人员(不是研发人员),那得基本上就是版本的刚入门水准了(甚至不会java)
: 就可以搞出单据,然后配出工作流。
: 金蝶以此将客户的定制需求直接在现场解决掉。
: ...................
&&&&&& ☆─────────────────────────────────────☆ &&
oldwatch (一条叫java的鱼◎潜心修炼待化龙) 于
(Thu Dec 24 12:31:42 2009)
提到: && 说到底,就是代码生成应该是封闭,自足,周边接口固定,完备的这么一个模块 && 某种意义上编译器就是一个代码生成器么 && 【 在 Luxifero (Luxifero) 的大作中提到: 】
:&&&&&&&& 代码生成,也不一定非要是静态代码文件生成嘛,比如构建一个model,就能输出一个主子结构的单据什么的,这个也可以认为是代码生成嘛
: 话说我一直觉得与其做静态代码生成,不如弄个动态的脚本引擎
&&&&&&&& ☆─────────────────────────────────────☆ &&
ROOT (admin) 于
(Thu Dec 24 12:31:49 2009)
提到: && 这种东西,国内无数人玩过了
要么是功能太受限
要么是干脆就上脚本了,回到开发的老路 && 话说vba+excel还能做出强大无比的单据呢 &&&& 【 在 Luxifero (Luxifero) 的大作中提到: 】
:&&&&&&&& 哦,这个啊,基本上大点的像样点的厂商都有这种玩具
: 他家的bos,一个现场实施人员(不是研发人员),那得基本上就是版本的刚入门水准了(甚至不会java)
: 就可以搞出单据,然后配出工作流。
: ...................
&&&&&& ☆─────────────────────────────────────☆ &&
Luxifero (Luxifero) 于
(Thu Dec 24 12:32:42 2009)
提到: &&&&&&&&&& 规则引擎肯定是要带的嘛,要不然就一个简单的只带增删改查询的单据怎么跟bpm玩啊
【 在 ROOT (admin) 的大作中提到: 】
这种东西,国内无数人玩过了
要么是功能太受限
要么是干脆就上脚本了,回到开发的老路 && 【 在 Luxifero (Luxifero) 的大作中提到: 】
:&&&&&&&& 哦,这个啊,基本上大点的像样点的厂商都有这种玩具
: 他家的bos,一个现场实施人员(不是研发人员),那得基本上就是版本的刚入门水准了(甚至不会java)
: 就可以搞出单据,然后配出工作流。
: ...................
&&&&&& ☆─────────────────────────────────────☆ &&
ihomd (ihomd) 于
(Thu Dec 24 12:33:01 2009)
提到: && 问题是金蝶咋就能完好,并且把他家最重要的产品线架在上面呢? && 【 在 ROOT (admin) 的大作中提到: 】
: 这种东西,国内无数人玩过了
: 要么是功能太受限
: 要么是干脆就上脚本了,回到开发的老路
: ...................
&&&&&& ☆─────────────────────────────────────☆ &&
oldwatch (一条叫java的鱼◎潜心修炼待化龙) 于
(Thu Dec 24 12:33:03 2009)
提到: && 不至于吧,报表还好说 && 工作流这玩意的稀奇需求简直断绝了任何高层自定义工具的可能 && 【 在 Luxifero (Luxifero) 的大作中提到: 】
:&&&&&&&& 用友金蝶浪潮作为乙方待遇不会比小作坊好多少
: 估计这也就金蝶了
: 换成小作坊做乙方,九成可能是在现场被直接玩死
: ...................
&&&&&& ☆─────────────────────────────────────☆ &&
ROOT (admin) 于
(Thu Dec 24 12:36:30 2009)
提到: && 我记得好像是金蝶系统内脚本语言二次开发吧
以前有人找我做类似的活,没接 && 【 在 ihomd (ihomd) 的大作中提到: 】
: 问题是金蝶咋就能完好,并且把他家最重要的产品线架在上面呢?
&&&&&&&& ☆─────────────────────────────────────☆ &&
ihomd (ihomd) 于
(Thu Dec 24 12:38:16 2009)
提到: && 这个就不知道了,他们.net和java肯定有两套不同的脚本引擎
我觉得他们的代码生成还是不错的。 && 【 在 ROOT (admin) 的大作中提到: 】
: 我记得好像是金蝶系统内脚本语言二次开发吧
: 以前有人找我做类似的活,没接
&&&&&&&& ☆─────────────────────────────────────☆ &&
canper (洗衣粉) 于
(Thu Dec 24 12:39:57 2009)
提到: &&&&&&我都有一个,本来去年就想重写,今年开源之,不过看我现在连我都bs的进度,明年都未必动得了工。 && 【 在 Luxifero (Luxifero) 的大作中提到: 】
:&&&&&&&& 哦,这个啊,基本上大点的像样点的厂商都有这种玩具
: 他家的bos,一个现场实施人员(不是研发人员),那得基本上就是版本的刚入门水准了(甚至不会java)
: 就可以搞出单据,然后配出工作流。
: ...................
&&&&&& ☆─────────────────────────────────────☆ &&
ROOT (admin) 于
(Thu Dec 24 12:44:19 2009)
提到: && 支持many-to-one,one-to-many,many-to-many等复杂结构吗
【 在 canper (洗衣粉) 的大作中提到: 】
:&&我都有一个,本来去年就想重写,今年开源之,不过看我现在连我都bs的进度,明年都未必动得了工。
&&&&&&&& ☆─────────────────────────────────────☆ &&
canper (洗衣粉) 于
(Thu Dec 24 12:45:01 2009)
提到: &&&&&&&&不,全部数据扔xml
【 在 ROOT (admin) 的大作中提到: 】
: 支持many-to-one,one-to-many,many-to-many等复杂结构吗
&&&&&&&& ☆─────────────────────────────────────☆ &&
ROOT (admin) 于
(Thu Dec 24 12:45:36 2009)
提到: && 查询效率会不会有问题? && 【 在 canper (洗衣粉) 的大作中提到: 】
:&&&&不,全部数据扔xml
&&&&&&&& ☆─────────────────────────────────────☆ &&
canper (洗衣粉) 于
(Thu Dec 24 12:47:51 2009)
提到: &&&&&&不负责查询,要查询自己写代码提取数据放字段里,其实我都不负责数据库。 &&只负责表单的定制,显示,权限控制,数据的采集和显示。 &&&& 自己调用接口,得到xml后自己放数据库,显示的时候自己从数据库把xml拿出来,扔给我。 && 【 在 ROOT (admin) 的大作中提到: 】
: 查询效率会不会有问题?
&&&&&&&& ☆─────────────────────────────────────☆ &&
lshi (ls) 于
(Thu Dec 24 12:54:05 2009)
提到: && 以前画面布局是直接进资源的
不进代码 && 后来java,qt,gtk等式要跨平台,
要用layout,没办法,只能进代码 && vs.net有点脑残,绝对定位和简单的gridlayout
进什么代码 && 【 在 modico ().net() 的大作中提到: 】
:&&赞 不方便见人。
&&&&&&&& ☆─────────────────────────────────────☆ &&
No1 () No1 () 于
(Thu Dec 24 13:09:53 2009)
提到: && 用Grails写个给参考参考;写完启动测试,耗时2分钟不到: && class News { &&&&&&&&&& def title = "标题..."; &&&&&&&& def author = "佚名"; &&&&&&&& def content = "..."; &&&&&&&& def date = new Date();
} && public class NewsController { &&&&&&&&&& def scaffold =
} && 但是,这种玩意有个屁用,如果项目都这么简单,还用it人作甚,直接淘宝上500块钱买一套安装上完了。 && 【 在 kobe2000 (活着,仅此而已) 的大作中提到: 】
: 只有一个实体:新闻
: 字段有 标题 作者 内容 时间
: 页面有 列表 单个 编辑 新建 (编辑新建可以复用)
: ...................
&&&&&& ☆─────────────────────────────────────☆ &&
canper (洗衣粉) 于
(Thu Dec 24 13:14:35 2009)
提到: &&&&&&弱弱的问一下,grails咋能够聪明到知道,title这一列叫标题,author这一列叫作者, &&content这一列叫内容,date这一列叫时间。 &&&&btw,显示列表的时候没理由显示content列吧,还有,输入的时候content列至少要是个 &&textarea吧,date好歹要个日期选择框吧。 &&&&这些grails是怎么聪明的知道的,这是我一直奋斗的目标,可惜始终是幻想都达不到这目标 && 【 在 No1 () No1 () 的大作中提到: 】
: 标&&题: Re: 不如这样吧,同学们每个人写一个增删改查的整体程序
: 发信站: 水木社区 (Thu Dec 24 13:09:53 2009), 站内
: 用Grails写个给参考参考;写完启动测试,耗时2分钟不到:
: class News {
:&&&&&&&& def title = "标题...";
:&&&&&&&& def author = "佚名";
:&&&&&&&& def content = "...";
:&&&&&&&& def date = new Date();
: public class NewsController {
:&&&&&&&& def scaffold =
: 【 在 kobe2000 (活着,仅此而已) 的大作中提到: 】
: : 只有一个实体:新闻
: : 字段有 标题 作者 内容 时间
: : 页面有 列表 单个 编辑 新建 (编辑新建可以复用)
: : ...................
: ※ 来源:·水木社区 newsmth.net·[FROM: 221.219.118.*]
&&&&&&&& ☆─────────────────────────────────────☆ &&
No1 () No1 () 于
(Thu Dec 24 13:25:26 2009)
提到: &&&& 问得好,Grails不是一个纯粹的玩具,它在生产系统上有用(我倒还不敢用),所以你说这些它都解决了:
有个叫i18n的plugin专门给字段标出中文或者其他语言的详细描述,不用编程,直接在properties里面定义: && title=标题 && author=作者 && ...
引入了constraints字段描述,形如:
static constraints = {&&&&&&&&&& name(maxLength:50,blank:false)&&&&&&&&&& dateOfBirth(nullable:false)&&&&&&&&&& gender(inList:["M", "F"])&&&&&&&&&& postalAddress(maxLength:255)&&&&&&&&&& emailAddress(maxLength:50,email:true)&& }
contents你用maxLength大点他就是textarea,date碰到日期类型它就是个选择框(有n个插件可用YUI、jQurey的日期选择器) && infoq上有本很简单的Grails中文书可以下载,上面讲得通俗易懂,童叟无欺,可参考参考。 && 【 在 canper (洗衣粉) 的大作中提到: 】
: 标&&题: Re: 不如这样吧,同学们每个人写一个增删改查的整体程序
: 发信站: 水木社区 (Thu Dec 24 13:14:35 2009), 站内
:&&弱弱的问一下,grails咋能够聪明到知道,title这一列叫标题,author这一列叫作者,
:&&content这一列叫内容,date这一列叫时间。
:&&btw,显示列表的时候没理由显示content列吧,还有,输入的时候content列至少要是个
:&&textarea吧,date好歹要个日期选择框吧。
:&&这些grails是怎么聪明的知道的,这是我一直奋斗的目标,可惜始终是幻想都达不到这目标
: 【 在 No1 () No1 () 的大作中提到: 】
: : 标&&题: Re: 不如这样吧,同学们每个人写一个增删改查的整体程序
: : 发信站: 水木社区 (Thu Dec 24 13:09:53 2009), 站内
: : 用Grails写个给参考参考;写完启动测试,耗时2分钟不到:
: : class News {
: :&&&&&&&& def title = "标题...";
: :&&&&&&&& def author = "佚名";
: :&&&&&&&& def content = "...";
: :&&&&&&&& def date = new Date();
: : public class NewsController {
: :&&&&&&&& def scaffold =
: : 【 在 kobe2000 (活着,仅此而已) 的大作中提到: 】
: : : 只有一个实体:新闻
: : : 字段有 标题 作者 内容 时间
: : : 页面有 列表 单个 编辑 新建 (编辑新建可以复用)
: : : ...................
: ※ 修改:·canper 于 Dec 24 13:15:03 2009 修改本文·[FROM: 116.23.118.20]
: : ※ 来源:·水木社区 newsmth.net·[FROM: 221.219.118.*]
:&&&&&&拍马屁,是极具快感的自我体现方式
: ※ 来源:·水木社区 newsmth.net·[FROM: 116.23.118.20]
&&&&&&&& ☆─────────────────────────────────────☆ &&
kobe2000 (活着,仅此而已) 于
(Thu Dec 24 13:27:32 2009)
提到: && 哦,rails原来是这样的,和自动生成代码框架差不多啊感觉 && 【 在 No1 () No1 () 的大作中提到: 】
: 问得好,Grails不是一个纯粹的玩具,它在生产系统上有用(我倒还不敢用),所以你说这些它都解决了:
: 有个叫i18n的plugin专门给字段标出中文或者其他语言的详细描述,不用编程,直接在properties里面定义:
: ...................
&&&&&& ☆─────────────────────────────────────☆ &&
sayinger (言者) 于
(Thu Dec 24 13:28:29 2009)
提到: && 怎么控制作用域? && 如果我有两个title啥的,或者说title不同地方叫法不同 && 【 在 No1 () No1 () 的大作中提到: 】
: 问得好,Grails不是一个纯粹的玩具,它在生产系统上有用(我倒还不敢用),所以你说这些它都解决了:
: 有个叫i18n的plugin专门给字段标出中文或者其他语言的详细描述,不用编程,直接在properties里面定义:
:&& title=标题
:&& author=作者
: 引入了constraints字段描述,形如:
: static constraints = {&&
:&&&&&&&& name(maxLength:50,blank:false)&&
:&&&&&&&& dateOfBirth(nullable:false)&&
:&&&&&&&& gender(inList:["M", "F"])&&
:&&&&&&&& postalAddress(maxLength:255)&&
:&&&&&&&& emailAddress(maxLength:50,email:true)&&
: contents你用maxLength大点他就是textarea,date碰到日期类型它就是个选择框(有n个插件可用YUI、jQurey的日期选择器)
: infoq上有本很简单的Grails中文书可以下载,上面讲得通俗易懂,童叟无欺,可参考参考。
&&&&&&&& ☆─────────────────────────────────────☆ &&
Luxifero (Luxifero) 于
(Thu Dec 24 13:29:53 2009)
提到: &&&&&&&&&& 哦,这个java简单封装一下也行,基于元数据的那种调调
【 在 No1 () No1 () 的大作中提到: 】 && 问得好,Grails不是一个纯粹的玩具,它在生产系统上有用(我倒还不敢用),所以你说这些它都解决了:
有个叫i18n的plugin专门给字段标出中文或者其他语言的详细描述,不用编程,直接在properties里面定义: && title=标题 && author=作者 && ...
引入了constraints字段描述,形如:
static constraints = {&&&&&&&&&& name(maxLength:50,blank:false)&&&&&&&&&& dateOfBirth(nullable:false)&&&&&&&&&& gender(inList:["M", "F"])&&&&&&&&&& postalAddress(maxLength:255)&&&&&&&&&& emailAddress(maxLength:50,email:true)&& }
contents你用maxLength大点他就是textarea,date碰到日期类型它就是个选择框(有n个插件可用YUI、jQurey的日期选择器) && infoq上有本很简单的Grails中文书可以下载,上面讲得通俗易懂,童叟无欺,可参考参考。 && 【 在 canper (洗衣粉) 的大作中提到: 】
: 标&&题: Re: 不如这样吧,同学们每个人写一个增删改查的整体程序
: 发信站: 水木社区 (Thu Dec 24 13:14:35 2009), 站内
:&&弱弱的问一下,grails咋能够聪明到知道,title这一列叫标题,author这一列叫作者,
:&&content这一列叫内容,date这一列叫时间。
:&&btw,显示列表的时候没理由显示content列吧,还有,输入的时候content列至少要是个
:&&textarea吧,date好歹要个日期选择框吧。
:&&这些grails是怎么聪明的知道的,这是我一直奋斗的目标,可惜始终是幻想都达不到这目标
: 【 在 No1 () No1 () 的大作中提到: 】
: : 标&&题: Re: 不如这样吧,同学们每个人写一个增删改查的整体程序
: : 发信站: 水木社区 (Thu Dec 24 13:09:53 2009), 站内
: : 用Grails写个给参考参考;写完启动测试,耗时2分钟不到:
: : class News {
: :&&&&&&&& def title = "标题...";
: :&&&&&&&& def author = "佚名";
: :&&&&&&&& def content = "...";
: :&&&&&&&& def date = new Date();
: : public class NewsController {
: :&&&&&&&& def scaffold =
: : 【 在 kobe2000 (活着,仅此而已) 的大作中提到: 】
: : : 只有一个实体:新闻
: : : 字段有 标题 作者 内容 时间
: : : 页面有 列表 单个 编辑 新建 (编辑新建可以复用)
: : : ...................
: ※ 修改:·canper 于 Dec 24 13:15:03 2009 修改本文·[FROM: 116.23.118.20]
:&&&&&&拍马屁,是极具快感的自我体现方式
:&& &&&&&&&& ☆─────────────────────────────────────☆ &&
canper (洗衣粉) 于
(Thu Dec 24 13:32:43 2009)
提到: &&&&&&&&不一样的。看着还可以,不过不知道足不足够灵活,比如: &&&&&&title这一列我在这个页面想叫标题,在另外一个页面想叫主题 (好吧,我承认我无聊) &&&&&&author这一列的可选值是从数据库或者配置文件里读出来的。 &&&&&&title用like查询,author用=查询 &&&&&&动作扩展,比如在每一行记录后面加一个按钮,点这按钮把state字段update为1,并提示一句话。 && 【 在 kobe2000 (活着,仅此而已) 的大作中提到: 】
: 哦,rails原来是这样的,和自动生成代码框架差不多啊感觉
&&&&&&&& ☆─────────────────────────────────────☆ &&
canper (洗衣粉) 于
(Thu Dec 24 13:33:59 2009)
提到: &&&&&&不简单,从05年开始,我整整封装了4年了,还没让自己满意。 &&&&当然,我弱。 && 【 在 Luxifero (Luxifero) 的大作中提到: 】
:&&&&&&&& 哦,这个java简单封装一下也行,基于元数据的那种调调
: 问得好,Grails不是一个纯粹的玩具,它在生产系统上有用(我倒还不敢用),所以你说这些它都解决了:
: ...................
&&&&&& ☆─────────────────────────────────────☆ &&
sayinger (言者) 于
(Thu Dec 24 13:35:43 2009)
提到: && 这个一点不无聊,比如有blog和comment两种对象,都有title,只显示blog的时候,blog.title当然可以叫标题。如果同时显示这两种对象的页面,blog.title和comment.title总不好都叫标题吧,或者说希望区分它们的需求是很合理的吧 && 【 在 canper (洗衣粉) 的大作中提到: 】
:&&&&不一样的。看着还可以,不过不知道足不足够灵活,比如:
:&&&&title这一列我在这个页面想叫标题,在另外一个页面想叫主题 (好吧,我承认我无聊)
:&&&&author这一列的可选值是从数据库或者配置文件里读出来的。
:&&&&title用like查询,author用=查询
:&&&&动作扩展,比如在每一行记录后面加一个按钮,点这按钮把state字段update为1,并提示一句话。
&&&&&&&& ☆─────────────────────────────────────☆ &&
Luxifero (Luxifero) 于
(Thu Dec 24 13:35:54 2009)
提到: &&&&&&&&&& 这个18n能搞定;查询模板;动作扩展框比较大根据实际范围可选的路子也不少
【 在 canper (洗衣粉) 的大作中提到: 】 &&&&&&不一样的。看着还可以,不过不知道足不足够灵活,比如: &&&&&&title这一列我在这个页面想叫标题,在另外一个页面想叫主题 (好吧,我承认我无聊) &&&&&&author这一列的可选值是从数据库或者配置文件里读出来的。 &&&&&&title用like查询,author用=查询 &&&&&&动作扩展,比如在每一行记录后面加一个按钮,点这按钮把state字段update为1,并提示一句话。 && 【 在 kobe2000

我要回帖

更多关于 上古卷轴5金钱代码 的文章

 

随机推荐