Всем привет,
хотел бы узнать, есть ли какой-нибудь текстовый редактор или плагин для эклипса позволяющий создавать JSp страницы. Сейчас делаю это в MyEclipse что не очень удобно.
Более того где можно почитать поконкретней про сами теги или же посмотреть какие-то конкретные примеры? Может даже есть какой-либо интересный источник(книга, сайт).
P.S. Правильно ли написан контроллер, валидатор и страница?
addChannel.jsp
Код:
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Add new channel</title>
</head>
<body>
<h1>Add new channel</h1>
<form action="addChannel.html" method="post">
<table width="110" border="1" >
<tbody>
<tr><spring:bind path="channel.name">
<td>Channel name:</td>
<td><input type="text" name="name" maxlength="20" value="${status.value}" /></td>
<td><font color="red">${status.errorMessage}</font></td></spring:bind>
</tr>
<tr><spring:bind path="channel.description">
<td>Channel description</td>
<td><input type="text" name="description" maxlength="20" value="${status.value}" /></td>
<td><font color="red">${status.errorMessage}</font></td></spring:bind>
</tr>
<tr>
<td><input type="submit" value="Add channel"/></td>
</tr>
<tr>
<td colspan="2">
<spring:hasBindErrors name="channel">
<b>Please check your inputs!</b>
</spring:hasBindErrors>
</td>
</tr>
</tbody>
</table>
</form>
</body>
</html>
Controller
Код:
package ee.saatekava.web;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.SimpleFormController;
import org.springframework.web.servlet.view.RedirectView;
import ee.saatekava.domain.Channel;
import ee.saatekava.service.IChannelManagerService;
public class AddChannelFormController extends SimpleFormController {
/** Logger for this class and subclasses */
final Log logger = LogFactory.getLog(getClass());
private IChannelManagerService channelManagerService;
public void setChannelManagerService(
IChannelManagerService channelManagerService) {
this.channelManagerService = channelManagerService;
}
public ModelAndView onSubmit(Object command) throws ServletException {
Channel channel = (Channel) command;
channelManagerService.addChannel(channel);
logger.info("added new channel: " + channel);
return new ModelAndView(new RedirectView(getSuccessView()));
}
protected Object formBackingObject(HttpServletRequest request) throws ServletException {
Channel channel = new Channel();
return channel;
}
}
Validator
Код:
package ee.saatekava.web.validator;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.validation.Errors;
import org.springframework.validation.ValidationUtils;
import org.springframework.validation.Validator;
import ee.saatekava.domain.Channel;
import ee.saatekava.service.IChannelManagerService;
public class AddChannelFormValidator implements Validator {
/** Logger for this class and subclasses */
protected final Log logger = LogFactory.getLog(getClass());
@SuppressWarnings("unchecked")
public boolean supports(Class clazz) {
return clazz.equals(Channel.class);
}
IChannelManagerService channelManagerService;
public void setChannelManagerService(
IChannelManagerService channelManagerService) {
this.channelManagerService = channelManagerService;
}
public void validate(Object obj, Errors errors) {
ValidationUtils.rejectIfEmpty(errors, "name", "channel.empty-name");
ValidationUtils.rejectIfEmpty(errors, "description", "channel.empty-description");
Channel channel = (Channel) obj;
if(channelManagerService.checkIfExists(channel.getName())){
errors.rejectValue("name", "channel.already-exist");
}
}
}
Код:
<bean id="addChannelFormController" class="ee.saatekava.web.AddChannelFormController">
<property name="commandName"><value>channel</value></property>
<property name="commandClass"><value>ee.saatekava.domain.Channel</value></property>
<property name="validator"><ref bean="addChannelFormValidator"/></property>
<property name="formView"><value>addChannel</value></property>
<property name="successView"><value>listChannels.html</value></property>
<property name="channelManagerService"><ref bean="channelManagerService"/></property>
</bean>