|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
学习JAVA的目的更多的是培养自身的工作能力,我觉得工作能力的一个核心就是:独立思考能力,因为只有独立思考后,才会有自己的见解进修Struts供应的和Form相干的标签
持续进修Struts供应的HTML标签库。byBudiKurniawan
在本文系列的第一部分中我报告了怎样利用Struts供应的HTML标签库来设置一个Struts使用程序。我还先容了该标签库中的一类标签:自力利用的标签。在第二部分中我将持续先容第二类标签:与form相干的标签。与form相干的标签包含<form>标签自己和一切必需包括在个中的标签。好比,<text>和<password>标签就是和form相干的标签,由于假如不把它们放到一个form中它们就没成心义。
<form>标签
<form>标签用于天生一个HTMLform。利用该标签时必需遵守很多划定规矩。
起首,<form>标签中必需包括一个action属性,它是这个标签中独一必须的属性。假如不具有该属性则JSP页面会抛出一个非常。以后你必需给这个action属性指定一个无效值。一个无效值是指使用程序的Struts设置文件中<action-mappings>元素里的任何一个<action>子元素的会见路径。并且响应的<action>元素中必需有一个name属性,它的值是formbean的称号。比方,假如你有如许一个<form>标签:
<html:formaction="/login">
那末你的Struts设置文件的<action-mappings>元素中必需有一个以下显现为粗体的<action>元素:
<action-mappings>
<actionpath="/login"
type="com.javapro.struts.LoginAction"
name="loginForm"
scope="request"
input="/login.jsp">
<forwardname="success"path="/mainMenu.jsp"/>
</action>
</action-mappings>
这就是说一个form标签是和formbean相干联的。
另外一个要遵守的划定规矩是:任何包括在<form>顶用来吸收用户输出的标签(<text>、<password>、<hidden>、<textarea>、<radio>、<checkbox>、<select>)必需在相干的formbean中有一个指定的属性值。好比,假如你有一个属性值被指定为“username”的<text>标签,那末相干的formbean中也必需有一个名为“username”的属性。输出<text>标签中的值会被用于天生formbean的userName属性。
除下面所讲的属性以外,<form>标签另有一些不是必需但加上更好的“主要”的属性。好比,你能够用focus属性来天生JavaScript,它会“定焦”(focus)到该form所包括的一个元素上。利用focus属性时你必要给它指定元素的称号。好比,以下代码是定焦在第二个Text元素上的:
<body>
<html:formaction="/login"focus="password">
UserName:<html:textproperty="userName"/>
<br>Password:<html:textproperty="password"/>
<br><html:submit/>
</html:form>
</body>
该段代码会被转换成:
<body>
<formname="loginForm"method="post"action="/myStrutsApp6/login.do">
UserName:<inputtype="text"name="userName"value="">
<br>Password:<inputtype="text"name="password"value="">
<br><inputtype="submit"value="Submit">
</form>
<scriptlanguage="JavaScript"type="text/javascript">
<!--
if(document.forms["loginForm"].elements[
"password"].type!="hidden")
document.forms["loginForm"].elements[
"password"].focus()
//-->
</script>
</body>
注重,<form>标签中method属性的缺省值是POST。别的,有无看到这个标签库是怎样创建JavaScript来定焦到password元素上的?这也是该库让人入神的中央之一。你不必忧虑怎样在客户端举行编程,它会帮你主动天生。
在运转后面的例子时还要注重,你必需有一个包括userName和password属性的相干form。你能够参考本文第三部分中的Login程序。
<text>标签
<text>标签用于天生一个文本的输出地区。它必需包括和相干formbean中的不异属性对应的“property”属性。该标签只要在嵌进到一个<form>标签中时才无效。
比方:<html:textproperty="userName"/>
会被转换成:<inputtype="text"name="userName"value="">
<password>标签
<password>标签用于天生一个口令字(typepassword)的输出地区。它必需包括和相干formbean中的不异属性对应的“property”属性。该标签只要在嵌进到一个<form>标签中时才无效。该标签中的一个很主要的属性是“redisplay”,它用于从头显现之前输出到这个地区中的值。该属性的缺省值为true。但是,为了使password不克不及被从头显现,你也许但愿将该属性的值设为false。
比方:<html:passwordproperty="password"redisplay="false"/>
会被转换成:<inputtype="password"name="password"value="">
<hidden>标签
<hidden>标签用于天生一个埋没文本的输出地区。它必需包括和相干formbean中的不异属性对应的“property”属性。该标签只要在嵌进到一个<form>标签中时才无效:
比方:<html:hiddenproperty="userName"/>
会被转换成:<inputtype="hidden"name="userName"value="">
<textarea>标签
<textarea>标签用于天生一个文本区元素(textareaelement)。它必需包括和相干formbean中的不异属性对应的“property”属性。
好比:<html:textareaproperty="details"cols="80"rows="20"value="Enterdetailshere"/>
会被转换成:<textareaname="details"cols="80"rows="20">Enterdetailshere</textarea>
<radio>标签
<radio>标签用于显现一个单选按钮(radiobutton)。它必需包括“value”属性。好比这段代码:
<html:radioproperty="title"value="1"/>Mr.
<html:radioproperty="title"value="2"/>Ms.
<html:radioproperty="title"value="3"/>Dr.
会被转换成如许的HTML:
<inputtype="radio"name="title"value="1">Mr.
<inputtype="radio"name="title"value="2">Ms.
<inputtype="radio"name="title"value="3">Dr.
<checkbox>标签
<checkbox>标签用于显现checkbox范例的输出地区。好比:
<html:checkboxproperty="notify"/>Pleasesendmenotification
会被转换成:<inputtype="checkbox"name="notify"value="on">Pleasesendmenotification
<submit>标签
<submit>标签用于天生提交范例(typesubmit)的输出地区。好比:
<html:submitvalue="Login"/>
会被转换成:<inputtype="submit"value="Login">
<reset>标签
<reset>标签用于天生重置范例(typereset)的输出地区。好比:
<html:reset/>
会被转换成:
<inputtype="reset"value="Reset">
<option>标签
<option>标签用于显现selectbox中的一个选项。参照上面的<select>标签。
<select>标签
<select>标签用于显现一个包括零个或更多选项的HTML选择元素。它必需被嵌进一个<form>标签中才无效。上面这个例子将申明怎样利用该标签:
<html:selectproperty="color"size="3">
<html:optionvalue="r">red</html:option>
<html:optionvalue="g">green</html:option>
<html:optionvalue="b">blue</html:option>
</html:select>
会被转换成:
<selectname="color"size="3"><option
value="r">red</option>
<optionvalue="g">green</option>
<optionvalue="b">blue</option>
</select>
在本文系列的第二部分,你学到了一些更主要的和form相干的标签。在利用这些标签之前,你必需按照一些划定规矩以便准确地使用它们。第三部分将报告怎样在真实的程序中利用这些标签。
Bean标志库:
利用该标志前起首要在jsp的页面导进响应的标志界说,比方
<%@tagliburi="/WEB-INF/struts-bean.tld"prefix="bean"%>。
利用的办法如<bean:***id=””/>。
上面对该标志库做一先容:
1. cookie:属性有id,name,multiple,value,id是对cookie在该页面中的独一标识,在页面别的中央能够经由过程id举行援用。相称于用cookie间接援用。Name是响应的cookie称号。Multiple能够付与恣意值,假如该值被界说将会前往响应给定值数目的cookie数组,假如该值没有被界说Value在这里是一个默许值,当我们这里的挪用的cookie不存在时,其值为我们这里的value值。
2.define:相称于jsp标志<jsp:useBean>,属性有id、name、property、scope、toScope、type、value。Id和cookie中的id起到了一样的感化;name是在响应的scope中独一bean标识;scope将会在响应的局限内举行响应的查找;toScope假如在scope中找不见响应的bean,将会在toScope中创建响应的bean;type是该类完整类路径和类。
比方:
<bean:defineid="submitForm"scope="session"name="submitForm"
type="struts.test.SubmitActionForm"/>
<%=submitForm.getName()%>
比方:
<jsp:useBeanid="test1"scope="page"
class="org.apache.struts.webapp.exercise.TestBean"/>
<bean:defineid="test1_string"name="test1"property="stringProperty"/>
<bean:defineid="test1_value"value="ABCDE"/>
<%=test1_string%>
<%=test1_value%>
3.header:经由过程该标志能够会见响应页面哀求的头的信息,详细属性有id、multiple、name、value。详细的寄义和cookie的相似。
比方:<%java.util.Enumerationnames=((HttpServletRequest)request).getHeaderNames();%>
<%while(names.hasMoreElements()){
Stringname=(String)names.nextElement();
%>
<bean:headerid="head"name="<%=name%>"/>
<tr>
<td><%=name%></td>
<td><%=head%></td>
</tr>
<%}%>
4.Include:属性有id、name、forward、anchor、href、transacttion、page。属性的申明参考响应apache的网站。
比方:<bean:includeid="index"page="/index.jsp"/>
<%=index%>
message:不经常使用,这里疏忽。
page:不经常使用,这里疏忽。
Parameter:属性有id、name、value、multiple。用来输入客户真个哀求参数和值。
比方:<bean:parameterid="param1"name="param1"/>
<bean:parameterid="param3"name="param3"value="UNKNOWNVALUE"/>
<%=param1%><br>
<%=param3%>
resource:属性有id、name、input。假如input属性被界说为恣意值,导进的资本将会前往一个InputStream对象。假如不被界说的话,资本将会以字符串的体例前往。
比方:<bean:resourceid="webxml"name="/WEB-INF/web.xml"/>
<bean:writename="webxml"filter="true"/>
size:用来对Cellection大概Map范例的数据举行元素个数统计。属性有:id、collection、name、property、scope。
比方:<%
java.util.ArrayListdata=newjava.util.ArrayList();
data.add("First");
data.add("Second");
data.add("Third");
data.add("Fourth");
data.add("Fifth");
pageContext.setAttribute("list",data,PageContext.PAGE_SCOPE);
%>
<bean:sizeid="dataSize"collection="<%=data%>"/>
<jsp:useBeanid="list"scope="page"class="java.util.ArrayList"/>
<bean:sizeid="listSize"name="list"/>
struts:不经常使用,这里疏忽。
Write:属性有bundle、filter、format、formatKey、ignore、local、name、property、scope。详细用法请参阅相干网站。
Html标志库:
利用该标志库起首要在响应的页面中引进标志库界说文件,如:
<%@tagliburi="/WEB-INF/struts-html.tld"prefix="html"%>。实在该标志库的年夜多半标志能够用html的标志来完成。这里值对其没法用html完成的几个标志举行先容。
Error:属性有:bundle、name、property、local。假如以上属性都不界说,将会从对属性文件中的一切error.***毛病信息显现出来。Bundle,邦定的毛病信息办理器,假如没有界说,将默许是由action创立的使用程序级毛病办理器。Name和property用来共同从响应的页面中挪用毛病信息办理bean来显现毛病信息。Local是一个毛病信息当地化处置器,默许会用是和当地的体例处置当地化。
属性资本文件中应当包括以下响应的信息,对毛病信息的实际举行格局化:
errors.header一切毛病信息后面显现的内容,能够举行html润色
errors.footer一切毛病信息前面的显现内容,能够举行html润色
errors.prefix每条毛病信息后面的显现信息,能够举行html润色
errors.suffix每条毛病信息前面的显现信息,能够举行html润色
message:属性有bundle、footer、header、id、local、message、property、name.详细的用法请参阅相干网站。
Logic标志库:利用该标志库起首要在响应的页面中引进标志库界说文件,如:<%@tagliburi="/WEB-INF/struts-logic.tld"prefix="logic"%>,详细的标志有:
Empty:属性有name、property、scope。
Equal:属性有cookie、header、name、parameter、property、scope、value。个中cookie和header、parameter是自力利用的。Name和property、scope分离利用,是绝对体系中的bean的。假如是体系中某一个复杂的参数,能够用name和scope分离就能够了。
Forward:属性只要name。
GreaterEqual:属性和equal一样。
GreaterThan:属性和equal一样。
LessEqual:属性和equal一样。
LessThan:属性和equal一样。
NotEmpty:属性和empty一样。
Match:属性和equal一样。
NotMatch:属性和equal一样。
NotEqual:属性和equal一样。
NotPresent:属性有coolie、header、name、property、parameter、scope、role、user。
Present:和notPresent一样。
MessageNotPresent:属性有message、name、property。
MessagePresent:和messageNotPresent一样。
Iterate:属性有collection、id、indexId、scope、name、property、length、offset、type。
在1995年5月23日以“Java”的名称正式发布了。 |
|