Struts2 – Tags

หลังจาก Setup Project เรียบร้อยแล้ว ผมแนะนำให้ไปหัด Setup อีกครั้งซักห้ารอบค่อยมาเริ่มอ่านบทความตอนนี้ครับ เอาให้มันคล่องทั้งในเรื่องการใช้เครื่องมือ IDE ทั้งความเร็วในการ Setup เพื่อให้เกิดความชำนาญและความมั่นใจ ทุกวันให้หัด Setup วันละห้ารอบลบแล้วสร้างใหม่ห้าม copy หรือเปิดดูของเดิม ซักหนึ่งสัปดาห์รับรอบคล่องแน่

Struts Tags เป็นกลุ่มของ tag lib เมื่อทำงานแล้วจะทำการ generate เป็น html เพื่อทำให้หน้าเว็บเป็นข้อมูลแบบ dynamic ซึ่ง struts tag มีหลาย tag แต่สำหรับผมที่ใช้บ่อยคือ

url


เอาไว้สร้าง link ไปยังหน้าเว็บอื่นหรือ resource ต่างๆ โดยใช้คำสั่ง
<s:url id="registerUrl" action="inputRegister" />

แล้วเอาค่า id ไปใส่ให้แท็ก link

<a href="${registerUrl}">Register</a>

จากตัวอย่างที่แล้วให้แก้ไขไฟล์ home.jsp ดังนี้

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>

<%@ taglib prefix="s" uri="/struts-tags"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Home</title>
</head>
<body>
	Hello, world!
	

	<s:url id="registerUrl" action="inputRegister" />
	<a href="${registerUrl}">Register</a>
</body>
</html>

tag href เป็นของ standard html แต่ว่าค่าเปลี่ยนไปใช้ tag ของ struts
เมื่อรันหน้าเว็บ tag ที่ generate ออกมาจะมีหน้าตาดังนี้

<a href="/hello-struts2/inputRegister.action">Register</a>

เราสามารถยุบรวมให้เหลือบรรทัดเดียวได้ดังนี้

<a href="<s:url action="inputRegister" />">Register</a>

ซึ่งตัดแค่ id ออก โดยส่วนตัวผมชอบแบบแยก เนืื่องจากหากหน้านั้นมีหลาย link จะทำให้ผมสับสนตอนกลับมาอ่านโค้ดและข้อดีอีกอย่างหนึ่งก็คือเราสามารถส่ง query string ผ่าน param ได้

<s:url id="registerUrl2" action="inputRegister">
	<s:param name="src">home</s:param>
</s:url>

form


ชื่อก็บอกอยู่แล้วว่าเอาไว้สร้าง form ในตัวอย่างที่แล้วยังไม่มี form ผมก็เลยสร้าง jsp เก็บไว้ที่ WEB-INF/jsp/register/input.jsp แล้วสร้าง form สำหรับการ Register ดังนี้

<s:form action="Register">
	<s:textfield name="email" label="E-mail" />
	<s:password name="password" label="Password" />
	<s:submit value="Submit" />
</s:form>

html ที่ generate ออกมาจะมีหน้าตาดังนี้

<form id="Register" name="Register" action="/hello-struts2/Register.action" method="post">
<table class="wwFormTable">
		<tr>
    <td class="tdLabel"><label for="Register_email" class="label">E-mail:</label></td>
    <td
><input type="text" name="email" value="" id="Register_email"/></td>
</tr>


		<tr>
    <td class="tdLabel"><label for="Register_password" class="label">Password:</label></td>
    <td
><input type="password" name="password" id="Register_password"/></td>
</tr>


		<tr>
    <td colspan="2"><div align="right"><input type="submit" id="Register_0" value="Submit"/>
</div></td>
</tr>


	</table></form>

หากเราเขียนเองคงใช้เวลานาน ช่วยเราประหยัดเวลาได้เยอะ

property


ใช้สำหรับดึงค่าจากตัวแปรใน action ขึ้นมาแสดงผลบนหน้าจอ โดยใช้ tag นี้

<s:property value="email" />

tag นี้ไม่ได้ทำการ generate html tag แต่เป็นการนำค่าในตัวแปรนี้ออกไปแสดงผลเป็นข้อความโดยตรง

One thought on “Struts2 – Tags

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s