我正在使用 gwtp,我想在服务器端使用 Spring。我已经看到 Spring 包含在 gwtp 中,但我不知道如何使用它。任何人都可以帮助我吗?会很酷的一些例子。
我已经通过谷歌寻找,但没有办法:(
非常感谢!!
我正在使用 gwtp,我想在服务器端使用 Spring。我已经看到 Spring 包含在 gwtp 中,但我不知道如何使用它。任何人都可以帮助我吗?会很酷的一些例子。
我已经通过谷歌寻找,但没有办法:(
非常感谢!!
好吧,首先你必须在你的web.xml
描述符中配置 Spring:
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<listener>
<listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
</listener>
<servlet>
<servlet-name>springGwtRemoteServiceServlet</servlet-name>
<servlet-class>org.spring4gwt.server.SpringGwtRemoteServiceServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>springGwtRemoteServiceServlet</servlet-name>
<url-pattern>/yourProjectName/springGwtServices/*</url-pattern>
</servlet-mapping>
请注意,此示例需要Spring4GWT库。
接下来,在您的RemoteService
界面中,您需要指定RemoteServiceRelativePath
如下示例:
import com.google.gwt.user.client.rpc.RemoteServiceRelativePath;
import com.google.gwt.user.client.rpc.RemoteService;
@RemoteServiceRelativePath("springGwtServices/userService")
public interface UserService extends extends RemoteService{
public User getUserByLogin(String name);
public void logout();
public void deleteUserById(Long userId);
}
现在,您只需要像在任何 Spring 应用程序中一样实现您的服务。示例,假设您希望通过 ID 删除用户并使用 GWTP 范例的操作:
在服务器端,这里是处理程序:
@Repository("deleteUserHandler")
public class DeleteUserHandler extends AbstractActionHandler<DeleteUserAction, DeleteUserResult> {
@Autowired
private UserService userService;
public DeleteUserHandler(){
super(DeleteUserAction.class);
}
@Override
public DeleteUserResult execute(DeleteUserAction action, ExecutionContext arg1)
throws ActionException {
Long idToDel = action.getUserToDeleteId();
if(idToDel != null){
userService.deleteUserById(idToDel);
}
return new DeleteUserResult();
}
@Override
public void undo(DeleteUserAction arg0, DeleteUserResult arg1,
ExecutionContext arg2) throws ActionException {
// TODO Auto-generated method stub
}
}
DeleteUserAction
如下_
public class DeleteUserAction extends UnsecuredActionImpl<DeleteUserResult> {
private Long userToDeleteId;
public DeleteUserAction(Long userToDel) {
this.userToDeleteId = userToDel;
}
/**
* For serialization only.
*/
@SuppressWarnings("unused")
private DeleteUserAction() {
}
public Long getUserToDeleteId() {
return userToDeleteId;
}
public void setUserToDeleteId(Long userToDeleteId) {
this.userToDeleteId = userToDeleteId;
}
}
最后是 Result 类:
public class DeleteUserResult implements Result {
/**
* For serialization only.
*/
//@SuppressWarnings("unused")
public DeleteUserResult() {
}
}
我希望这有帮助。
PS:我想你可以自己做Spring的事情(应用程序上下文等),如果不能,请告诉
您可以在 Github 的 GWTP 存储库中找到一些很好的示例。我们最近将所有从 Google 代码迁移到托管最新版本的 Github。
请记住,您还可以使用新的 GWTP-Dispatch-Rest 使用 REST 通信,这样您就不需要大量的配置代码来将 GWTP 与 Spring 服务器端集成。