龙行天下

  政 博
随笔 - 23, 文章 - 0, 评论 - 12, 引用 - 0
数据加载中……

Hibernate查询解决方案

     摘要: 第一部分: Hibernate 提供的查询接口或其方法 (此部分不做深究,请参考 hibernate 手册)              1 。...  阅读全文

posted @ 2006-05-03 20:03 feingto 阅读(419) | 评论 (0)编辑 收藏

struts在URI后面传参数的问题

在struts标签<html:link>的page属性指定的URI后面传递参数可以有几种方式:
1.若明确参数名和参数值则直接在URI后输出,
如:<html:link page="/test.do?action=add">add</html:link>

2.对于参数值不确定的,paramName和paramProperty来输出,用paramId属性指定参数名。
对于paramName指定的对象应该存在于page、request、session、application其中之一。一般来说,是从Action类传过来的,作为request的属性之一(requst.setAttribute("name",object))。
如果paramName指定的对象是action的ActionForm,则无需使用request.setAttribute方法。
例:<html:link page="/test.do" paramId="userid" paramName="uid">uname</html:link>
若参数值是一个bean对象的属性值(比如ActionForm,或者集合中存放的对象)则:
<html:link page="/test.do" paramId="userid" paramName="user" paramProperty="uid">uname</html:link>

3.若两个参数,一个确定一个不确定,则是以上两种方法的结合,即:
<html:link page="/test.do?action=modify" paramId="userid" paramName="uid">modify</html:link>

4.对于多个参数的问题,可以使用一个HashMap集合对象来存放所有的参数名及对应的参数值的方式,paramName属性值指定为该HashMap集合对象即可。
举例:
<%
//代码理想的位置应该是在action中
//可以在jsp页面测试
  java.util.HashMap pms = new java.util.HashMap();
  pms.put("code", "001002");
  pms.put("name", "tester");
  pms.put("alias", new String[]{"matin","jack"});
  request.setAttribute("params", pms);
%>
<html:link action="/test.do" name="params" >test</html:link>
编译后的结果:<a href="/test.do?code=001002&name=tester&alias=matin&alias=jack">test</a>
这种方式虽然可以解决传多参数的问题,但是实现起来也比较麻烦,特别是对记录集中的数据逐条列出的时候

5.针对有的网友在<html:link>标签中嵌入使用jsp脚本(scriptlet)的问题,
例如:
<html:link page="/test.do?code=<%=varible%>">add</html:link>,这种写法是错误的,是无法编译的。
有的网友认为在struts标签内是不允许使用jsp脚本的,这种说法也不准确。如果前面的写法改成:
<html:link page="<%="/test.do?code="+varible%>">add</html:link>,就可以被执行,但是要注意URL相对路径的问题。

虽然在struts标签中嵌入jsp脚本不是真正意义上的struts应用,但是有时在委曲求全的情况下也只能如此了,除非使用自定义标签。比如在form表单中可能需要根据具体数据让某个字段是只读的,就可以用嵌入jsp脚本来实现:
<%
boolean rdonly=false;
if(2==2) rdonly=true;
%>
<html:text property="userid" readonly="<%=rdonly%>" />


6.另外一种比较变态的方法,既不是真正意义上的struts,也不符合xml规范。那就是在<a>标签中用<bean:write>标签输出参数值。
如:<a href="test.do?uid=<bean:write name="user" property="userid"/>&name=<bean:write name="user" property="username"/>">test</a>

posted @ 2006-05-03 20:02 feingto 阅读(877) | 评论 (0)编辑 收藏

struts错误和信息的处理

1. 错误和信息的处理 .

首先在资源文件中定义错误信息和普通信息 . :MessageResources.properties 中定义如下 :

java 代码



#
# Resources
for testing <html:errors> tag.
#

errors.header=<table>
errors.footer=</table>
errors.prefix=<tr><td>
errors.suffix=</td></tr>

property1error1=Property 1,
Error 1
property2error1=Property 2,
Error 1
property2error2=Property 2,
Error 2
property2error3=Property 2,
Error 3
property3error1=Property 3,
Error 1
property3error2=Property 3,
Error 2
globalError=Global
Error

#
# Resources
for testing <html:messages> tag.
#

messages.header=<table>
messages.footer=</table>

property1message1=Property 1, Message 1
property2message1=Property 2, Message 1
property2message2=Property 2, Message 2
property2message3=Property 2, Message 3
property3message1=Property 3, Message 1
property3message2=Property 3, Message 2
globalMessage=Global Message

 



在程序中定义错误和信息类 , 这个例子写在 JSP

java 代码



<%
      ActionErrors errors =
new ActionErrors();
      errors.add("property1",
new ActionError("property1error1"));
      errors.add("property2",
new ActionError("property2error1"));
      errors.add("property2",
new ActionError("property2error2"));
      errors.add("property2",
new ActionError("property2error3"));
      errors.add("property3",
new ActionError("property3error1"));
      errors.add("property3",
new ActionError("property3error2"));
      errors.add(ActionErrors.GLOBAL_ERROR,
new ActionError("globalError"));
      request.setAttribute(Globals.ERROR_KEY, errors);

      ActionMessages messages =
new ActionMessages();
      messages.add("property1",
new ActionMessage("property1message1"));
      messages.add("property2",
new ActionMessage("property2message1"));
      messages.add("property2",
new ActionMessage("property2message2"));
      messages.add("property2",
new ActionMessage("property2message3"));
      messages.add("property3",
new ActionMessage("property3message1"));
      messages.add("property3",
new ActionMessage("property3message2"));
      messages.add(ActionMessages.GLOBAL_MESSAGE,
new ActionMessage("globalMessage"));
      request.setAttribute(Globals.MESSAGE_KEY, messages);
    %>

 





显示错误 :

java 代码



<html:errors property="property1" />
<html:errors property="property2" />

 


显示信息 :

java 代码



<html:messages property="property1" message="
true " id="msg" header="messages.header" footer="messages.footer">
            <tr>
              <td>
                     <%= pageContext.getAttribute("msg") %>
              </td>
            </tr>
          </html:messages>

<html:messages message="
true " id="msg" header="messages.header" footer="messages.footer">
            <tr>
              <td>
               <%= pageContext.getAttribute("msg") %>
              </td>
            </tr>
</html:messages>

 

 

posted @ 2006-05-03 20:02 feingto 阅读(1021) | 评论 (0)编辑 收藏

仅列出标题
共3页: 上一页 1 2 3