我的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()?
我想改变枚举被编组为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
因为我不想单独编组每个枚举.
我的域类看起来像这样:
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)
我期待着找到解决方案.谢谢.
我正在尝试向带有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,但没有成功。
grails ×2
angularjs ×1
enumeration ×1
feign ×1
grails-orm ×1
java ×1
json ×1
listener ×1
marshalling ×1
spring-boot ×1
watch ×1