0

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

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

非常感谢!!

4

3 回答 3

4

GWTP 使用 GIN 模式(Dependency Injection at Client Side),它默认与 DI 服务器端的 GUICE 集成。了解更多详情

Spring 是服务器端DI 模式

I have seen that Spring is include in gwtp,

它根本不包括 Spring。它是与 GUICE 的默认集成。但你可以使用弹簧。

于 2013-06-11T17:30:48.010 回答
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 范例的操作:
在服务器端,这里是处理程序:

@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的事情(应用程序上下文等),如果不能,请告诉

于 2013-06-11T16:52:47.643 回答
0

您可以在 Github 的 GWTP 存储库中找到一些很好的示例。我们最近将所有从 Google 代码迁移到托管最新版本的 Github。

请记住,您还可以使用新的 GWTP-Dispatch-Rest 使用 REST 通信,这样您就不需要大量的配置代码来将 GWTP 与 Spring 服务器端集成。

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

于 2013-06-13T19:41:12.900 回答