小编Mat*_*ble的帖子

您对构建GWT应用程序的建议是什么?MVC,MVP或自定义消息传递解决方案?

我刚刚为客户启动了一个新的GWT项目,我很想听听人们对各种GWT MVC架构的体验.在最近的一个项目中,我使用了GXT MVC以及自定义消息传递解决方案(基于Appcelerator的MQ).GXT MVC工作正常,但对GWT来说似乎有点过分,并且难以使用浏览器历史记录.我听说过PureMVCGWTiger,但从未使用它们.我们的定制MQ解决方案工作得很好,但是很难用JUnit测试组件.

另外,我听说Google Wave(GWT应用程序)是使用Model-View-Presenter模式编写的.最近发布了一个示例MVP应用程序,但是看一下代码,它似乎并不直观.

如果您正在构建新的GWT应用程序,您将使用哪种架构?您选择的利弊是什么?

谢谢,

马特

architecture model-view-controller mvp gwt puremvc

25
推荐指数
3
解决办法
1万
查看次数

如何在Spring Boot中以编程方式创建bean?

我有一个应用程序,其中包含application.properties中列出的许多数据源设置.我有一个@ConfigurationProperties加载这些设置的类.现在我想从这个ConfigurationProperties类中获取值并使用它们来动态创建DataSource bean.我尝试过使用@PostConstruct和实现BeanFactoryPostProcessor.但是,BeanFactoryPostProcessor处理似乎很早就发生了 - 在我的ConfigurationProperties课程填充之前.如何DataSource使用Spring Boot快速读取属性并创建bean?

这是我的application.properties的样子:

ds.clients[0]=client1|jdbc:db2://server/client1
ds.clients[1]=client2,client3|jdbc:db2://server/client2
ds.clients[2]=client4|jdbc:db2://server/client4
ds.clients[3]=client5|jdbc:db2://server/client5
Run Code Online (Sandbox Code Playgroud)

我的ConfigurationProperties类:

@Component
@ConfigurationProperties(prefix = "ds")
public class DataSourceSettings {
    public static Map<String, String> CLIENT_DATASOURCES = new LinkedHashMap<>();

    private List<String> clients = new ArrayList<>();

    public List<String> getClients() {
        return clients;
    }

    public void setClients(List<String> clients) {
        this.clients = clients;
    }

    @PostConstruct
    public void configure() {
        for (String client : clients) {
            // extract client name
            String[] parts …
Run Code Online (Sandbox Code Playgroud)

java spring spring-boot

23
推荐指数
2
解决办法
5万
查看次数

角度和咕噜声

我是一个Grunt新手,我正在尝试转换一个Angular应用程序(基于angular-seed)来将它用于CSS/JS concat/minification.我有一个index.html文件,用于定义CSS和JS文件:

<!-- build:css css/myjmh.css -->
<link rel="stylesheet" href="lib/bootstrap/bootstrap.min.css"/>
<link rel="stylesheet" href="lib/font-awesome/font-awesome.min.css"/>
<link rel="stylesheet" href="lib/toaster/toaster.css"/>
<link rel="stylesheet" href="css/app.css"/>
<link rel="stylesheet" href="css/custom.css"/>
<link rel="stylesheet" href="css/responsive.css"/>
<!-- endbuild -->

...

<!-- build:js js/myjmh.min.js -->
<script src="lib/jquery/jquery-1.10.2.min.js"></script>
<script src="lib/bootstrap/bootstrap.min.js"></script>
<script src="lib/angular/angular.min.js"></script>
<script src="lib/angular/angular-animate.min.js"></script>
<script src="lib/angular/angular-cookies.min.js"></script>
<script src="lib/angular/angular-resource.min.js"></script>
<script src="lib/angular/angular-route.min.js"></script>
<script src="lib/fastclick.min.js"></script>
<script src="lib/toaster/toaster.js"></script>
<script src="lib/webshim/modernizr.min.js"></script>
<script src="lib/webshim/polyfiller.min.js"></script>
<script src="js/app.js"></script>
<script src="js/services.js"></script>
<script src="js/controllers.js"></script>
<script src="js/filters.js"></script>
<script src="js/directives.js"></script>
<!-- endbuild -->
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用grunt-usemin及其useminPrepare任务从我的HTML中获取这些值.

这是我的Gruntfile.js:

module.exports = function (grunt) {

    grunt.initConfig({
        pkg: grunt.file.readJSON('package.json'),

        clean: …
Run Code Online (Sandbox Code Playgroud)

angularjs gruntjs

13
推荐指数
2
解决办法
2万
查看次数

如何让Spring MVC在JUnit测试中调用验证?

我有一个名为Browser的POJO,我用Hibernate Validator注释进行了注释.

import org.hibernate.validator.constraints.NotEmpty;

public class Browser {

    @NotEmpty
    private String userAgent;
    @NotEmpty
    private String browserName;

...

}
Run Code Online (Sandbox Code Playgroud)

我编写了以下单元测试,试图验证我的Controller方法是否捕获了验证错误.

@Test
public void testInvalidData() throws Exception {
    Browser browser = new Browser("opera", null);
    MockHttpServletRequest request = new MockHttpServletRequest();

    BindingResult errors = new DataBinder(browser).getBindingResult();
    // controller is initialized in @Before method
    controller.add(browser, errors, request);
    assertEquals(1, errors.getErrorCount());
}
Run Code Online (Sandbox Code Playgroud)

这是我的Controller的add()方法:

@RequestMapping(value = "/browser/create", method = RequestMethod.POST)
public String add(@Valid Browser browser, BindingResult result, HttpServletRequest request) throws Exception {
    if (result.hasErrors()) {
        request.setAttribute("errorMessage", result.getAllErrors());
        return …
Run Code Online (Sandbox Code Playgroud)

java junit spring spring-mvc bean-validation

12
推荐指数
1
解决办法
2万
查看次数

如何使用JavaConfig从Spring Security中删除ROLE_前缀?

我正在尝试删除Spring Security中的"ROLE_"前缀.我尝试的第一件事是:

http.servletApi().rolePrefix("");
Run Code Online (Sandbox Code Playgroud)

这没用,所以我尝试BeanPostProcessorhttp://docs.spring.io/spring-security/site/migrate/current/3-to-4/html5/migrate-3-to-4-中的建议创建一个jc.html#m3to4-role-prefixing-disable.那也行不通.

最后,我尝试创建自己的SecurityExpressionHandler:

  @Override
  protected void configure(HttpSecurity http) throws Exception {
      http
          .authorizeRequests()
          .expressionHandler(webExpressionHandler())
          .antMatchers("/restricted").fullyAuthenticated()
          .antMatchers("/foo").hasRole("mycustomrolename")
          .antMatchers("/**").permitAll();
  }

  private SecurityExpressionHandler<FilterInvocation> webExpressionHandler() {
      DefaultWebSecurityExpressionHandler defaultWebSecurityExpressionHandler = new DefaultWebSecurityExpressionHandler();
      defaultWebSecurityExpressionHandler.setDefaultRolePrefix("");
      return defaultWebSecurityExpressionHandler;
  }
Run Code Online (Sandbox Code Playgroud)

但是,这也不起作用.如果我使用"hasAuthority(roleName)"而不是hasRole,它按预期工作.

是否可以从Spring Security的hasRole检查中删除ROLE_前缀?

spring spring-security spring-java-config

11
推荐指数
5
解决办法
1万
查看次数

Spring-Boot:如何在@ImportResource中引用application.properties

我的Spring Boot应用程序中有一个applicationContext.xml文件.在这个文件中,它有一个属性占位符 - $ {profile.services.url} - 用于配置<jaxws:client> bean的"address"属性.

在我的Application.java类中,我导入了这个文件.

@ImportResource("classpath:applicationContext.xml")
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}
Run Code Online (Sandbox Code Playgroud)

我在application.properties中定义了"profile.services.url".但是,在我的XML文件中构建bean时无法识别它.我尝试添加以下内容,但它似乎不起作用.

<context:property-placeholder location="classpath:application.properties"/>
Run Code Online (Sandbox Code Playgroud)

关于如何让@ImportResource识别Spring Boot的属性支持的任何建议?

java spring spring-boot

10
推荐指数
1
解决办法
4万
查看次数

如何在Spring的AsyncRestTemplate上设置超时?

我在我的项目中设置了RestTemplate和AsyncRestTemplate,类似于以下内容:

http://vincentdevillers.blogspot.fr/2013/10/a-best-spring-asyncresttemplate.html

我注意到除非我将httpRequestFactory()bean更改为以下内容,否则连接超时实际上不起作用:

@Bean
public ClientHttpRequestFactory httpRequestFactory() {
    HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory(httpClient());
    factory.setConnectTimeout(DEFAULT_READ_TIMEOUT_MILLISECONDS);
    factory.setReadTimeout(DEFAULT_READ_TIMEOUT_MILLISECONDS);
    return factory;
}
Run Code Online (Sandbox Code Playgroud)

如果我将DEFAULT_READ_TIMEOUT_MILLISECONDS设置为5,则在使用restTemplate(按预期)时会发生超时.但是,当我使用AsyncRestTemplate时,不会发生超时.我已经像httpRequestFactory()那样修改了asyncHttpRequestFactory(),但是没有骰子.

@Bean
public AsyncClientHttpRequestFactory asyncHttpRequestFactory() {
    HttpComponentsAsyncClientHttpRequestFactory factory = new HttpComponentsAsyncClientHttpRequestFactory(asyncHttpClient());
    factory.setConnectTimeout(DEFAULT_READ_TIMEOUT_MILLISECONDS);
    factory.setReadTimeout(DEFAULT_READ_TIMEOUT_MILLISECONDS);
    return factory;
}
Run Code Online (Sandbox Code Playgroud)

这是我在Spring MVC控制器中尝试使用AsyncRestTemplate的方法:

String url = "...";
// Start the clock
long start = System.currentTimeMillis();

ListenableFuture<ResponseEntity<String>> results = asyncRestTemplate.getForEntity(url, String.class);
// Wait until the request is finished
while (!(results.isDone())) {
    Thread.sleep(10); //millisecond pause between each check
}
System.out.println("Elapsed time: " + (System.currentTimeMillis() - start));
return results.get().getBody();
Run Code Online (Sandbox Code Playgroud)

如何让AsyncRestTemplate读取我的连接超时设置? …

spring asynchronous spring-mvc resttemplate

8
推荐指数
2
解决办法
7578
查看次数

如何配置Spring Security SAML以与Okta一起使用?

我正在尝试使用Okta 进行spring-boot-security-saml-sample应用程序.要将Okta添加为提供程序,我对WebSecurityConfig.java进行了以下更改:

https://gist.github.com/mraible/c8b52972f76e6f5e30d5

我发现以下问题提供了一些指导,但我无法完成工作.

配置saml-sample(SP)以使用Okta(IdP)

这就是我在Okta上使用的值:

Application label: Spring Boot SAML App
Force Authentication: false
Post Back URL: http://localhost:8080/
Name ID Format: EmailAddressRecipient
Recipient: http://localhost:8080/saml/SSO/alias/defaultAlias
Audience Restriction: com:vdenotaris:spring:sp
authnContextClassRef: PasswordProtectedTransport
Response: Signed
Assertion: Signed
Request: Compressed
Destination: http://localhost:8080/saml/SSO/alias/defaultAlias
Default Relay State: (none)
Attribute Statements: email|${user.email},firstName|${user.firstName}
Run Code Online (Sandbox Code Playgroud)

看起来它可以从日志中运行:

[2014-12-30 12:18:33.004] boot - 18748 DEBUG [http-nio-8080-exec-8] --- BaseMessageEncoder: Successfully encoded message.
[2014-12-30 12:18:33.004] boot - 18748 DEBUG [http-nio-8080-exec-8] --- HttpSessionStorage: Storing message a12gf64fh3f35fgh2a8dd1fd0i0dc02 to session C5D010344EF5D022718B12B6D25F1D1E
[2014-12-30 12:18:33.004] boot - 18748 …
Run Code Online (Sandbox Code Playgroud)

spring-security saml-2.0 spring-saml okta

8
推荐指数
1
解决办法
4874
查看次数

如何使Spring Security接受JSON而不是表单参数?

我正在尝试更改JHipster,因此它使用JSON对象进行身份验证而不是表单参数.我已经成功地为其JWT认证机制做了这项工作.现在我想为其他身份验证选项做这件事.

是否有一种简单的方法可以更改Spring Security的默认安全配置以允许此操作?以下是JHipster现在使用的内容:

.and()
    .rememberMe()
    .rememberMeServices(rememberMeServices)
    .rememberMeParameter("remember-me")
    .key(env.getProperty("jhipster.security.rememberme.key"))
.and()
    .formLogin()
    .loginProcessingUrl("/api/authentication")
    .successHandler(ajaxAuthenticationSuccessHandler)
    .failureHandler(ajaxAuthenticationFailureHandler)
    .usernameParameter("j_username")
    .passwordParameter("j_password")
    .permitAll()
Run Code Online (Sandbox Code Playgroud)

我想发送以下作为JSON而不是表单参数:

{username: "admin", password: "admin", rememberMe: true}
Run Code Online (Sandbox Code Playgroud)

java spring-security spring-boot jhipster

7
推荐指数
1
解决办法
2615
查看次数

TypeError:您提供了"undefined",其中包含了一个流

我有一个Ionic应用程序,它有一个user提供程序,有一个signup()方法:

doSignup() {
  // set login to same as email
  this.account.login = this.account.email;
  // Attempt to login in through our User service
  this.user.signup(this.account).subscribe((resp) => {
    this.navCtrl.push(MainPage);
  }, (err) => {
    //console.log('error in signup', err);
    // ^^ results in 'You provided 'undefined' where a stream was expected'
    //this.navCtrl.push(MainPage);

    // Unable to sign up
    let toast = this.toastCtrl.create({
      message: this.signupErrorString,
      duration: 3000,
      position: 'top'
    });
    toast.present();
  });
}
Run Code Online (Sandbox Code Playgroud)

出于某种原因,此代码从不调用成功回调,只调用错误处理程序.如果是这样,会导致您在上面的评论中看到的错误.

我的user.signup()方法如下:

signup(accountInfo: any) {
  return this.api.post('register', accountInfo).share(); …
Run Code Online (Sandbox Code Playgroud)

rxjs ionic-framework angular

7
推荐指数
5
解决办法
3万
查看次数