我正在使用gwtp,我想在服务器端使用Spring。我已经看到Spring包含在gwtp中,但我不知道如何使用它。任何人都可以帮助我吗? 一些例子会很酷。
我已经通过谷歌寻找了,但没有办法:(
非常感谢!!
答案 0 :(得分:4)
GWTP使用GIN模式(Dependency Injection at Client Side)
,它与DI服务器端的GUICE默认集成。更多细节GWTP
Spring是服务器端DI pattern。
I have seen that Spring is include in gwtp,
它根本不包括Spring。它是与GUICE的默认集成。但你可以随身携带弹簧。
答案 1 :(得分:3)
嗯,首先你需要在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范例:
在服务器端,这是Handler:
@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的东西(应用程序上下文等),如果没有,请告诉
答案 2 :(得分:0)
您可以在Github上的GWTP存储库中找到一些很好的示例。我们最近将所有人从Google Code迁移到了Github,后者托管了最新版本。
请记住,您也可以使用新的GWTP-Dispatch-Rest来使用REST通信,因为您不需要很多配置代码来将GWTP与Spring服务器端集成。