小编MBo*_*zic的帖子

当reloadOnSearch为false时,AngularJs $ watch on $ location.search不起作用

我的routeProvider for route将reloadOnSearch设置为false:

 $routeProvider
     .when(
        "/film/list",
         {
          templateUrl: '/film/list.html', 
          controller: FilmListController,
          reloadOnSearch: false
          } 
          ....

  )
Run Code Online (Sandbox Code Playgroud)

我这样做是因为我不希望在查询字符串更改后重新加载整个控制器,但我仍然使用它,并且url看起来像这样:film/list?sort=isbn&order=asc&offset=0.现在每当查询字符串更改时,我想从我的控制器调用一个函数.所以我试着在控制器中设置$ watch:

$scope.location = $location;
$scope.$watch( 'location.search()', function( search) {
        $scope.list();
 });
Run Code Online (Sandbox Code Playgroud)

但这不起作用.如果我设置$ watch来查看查询字符串的单个参数的更改,那么它可以工作.但我不想为查询字符串的每个参数设置$ watch.我现在使用的解决方案是:

$scope.location = $location;
$scope.$watch( 'location.url()', function( url ) {
    if($location.path() == '/film/list')
        $scope.list();
 });
Run Code Online (Sandbox Code Playgroud)

因此,我不是观察搜索,而是观察整个网址,然后检查路径是否是我在routeProvider中设置的路径,以有条件地调用该函数.我不喜欢这个解决方案是我必须明确键入要匹配的$ location.path的值.

任何人都可以建议一个更好的解决方案,也许可以解释为什么$ watch不适用于$ location.search()

listener watch angularjs

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

Grails Enumeration to JSON

我想改变枚举被编组为JSON的方式.我目前正在使用默认的grails.converters.JSON(作为JSON),例如在我使用的控制器中:

FilmKind.values()为JSON

这个输出是:

"kind":[{"enumType":"FilmKind","name":"DRAMA"},{"enumType":"FilmKind","name":"ACTION"}]
Run Code Online (Sandbox Code Playgroud)

我想删除"enumType"并返回:

"kind":["DRAMA","ACTION"]
Run Code Online (Sandbox Code Playgroud)

我正在寻找一个仍然允许我使用的解决方案

作为JSON

因为我不想单独编组每个枚举.

grails json enumeration marshalling

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

具有id而不是object的Grails域类构造函数

我的域类看起来像这样:

class UserEvent { 
    User user
    Event event
    boolean isAttending
}
Run Code Online (Sandbox Code Playgroud)

生成的数据库表外观具有以下列:

[ID , EVENT_ID, USER_ID , IS_ATTENDING ]
Run Code Online (Sandbox Code Playgroud)

我有Event对象,只有User对象的id(user_id).我想用这个数据创建新的UserEvent对象,而不加载User对象,它可能看起来像这样:

def userEvent = new UserEvent(user:['id':user_id],isAttending: true, event: event)
Run Code Online (Sandbox Code Playgroud)

我尝试了很多东西,但没有找到解决方案.我认为这绝对是可能的,因为它与控制器中的params以类似的方式完成,控制器只包含关联对象的id:

 def userEvent= new UserEvent(params)
Run Code Online (Sandbox Code Playgroud)

我期待着找到解决方案.谢谢.

grails grails-orm grails-domain-class

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

FeignClient 使用 application/x-www-form-urlencoded body 创建 POST

我正在尝试向带有application/x-www-form-urlencoded值的主体的 keycloak REST API 端点发出 POST 请求。

这是一个请求的 cURL:

curl -X POST \
  https://auth.beyondtime-stage.io/auth/realms/master/protocol/openid-connect/token \
  -H 'cache-control: no-cache' \
  -H 'content-type: application/x-www-form-urlencoded' \
  -d 'username=admin&password=pass123&client_id=admin-cli&grant_type=password'
Run Code Online (Sandbox Code Playgroud)

令我失望的是,我还没有找到用假装做到这一点的方法。

这是我尝试过的一个例子:

@FeignClient(name = "beyondtime-io-kc-client", url = "${btio.keycloakUrl}", path = "/")
public interface KeycloakAdminClient {

    @PostMapping(name="realms/master/protocol/openid-connect/token", consumes = "application/x-www-form-urlencoded")
    String getAuthToken(@RequestParam("username") String username,
                        @RequestParam("password") String password,
                        @RequestParam("client_id") String clientId,
                        @RequestParam("grant_type") String grantType);

}
Run Code Online (Sandbox Code Playgroud)

在我的 pom.xml 中,我使用:

spring-cloud-starter-openfeign 2.1.1.RELEASE

我还尝试添加feign -form依赖项和@Param而不是@RequestParam,但没有成功。

java spring-boot spring-cloud-feign feign

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