GWTP在服务器端使用Spring

时间:2013-06-11 15:04:24

标签: spring gwt gwt-platform gwtp

我正在使用gwtp,我想在服务器端使用Spring。我已经看到Spring包含在gwtp中,但我不知道如何使用它。任何人都可以帮助我吗? 一些例子会很酷。

我已经通过谷歌寻找了,但没有办法:(

非常感谢!!

3 个答案:

答案 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服务器端集成。

https://github.com/ArcBees/GWTP-Samples