我有一个Spring Data Rest webmvc应用程序,我想为批处理操作添加一些自定义功能.
我已经创建了一个控制器,并将其混合到uri命名空间中,但我希望它能够像自定义/search查询一样接受URI ,而不仅仅是ID.
我试过注册一个自定义<String, Long>转换器(我的实体有一个Long ID类型,但似乎被忽略.有没有办法配置我的控制器,使其采用自动实现的SDR控制器的行为?
即使有某种方法我可以调用它将自动解析一个实体的URI,这也可以正常工作(因为我可以简单地接受一个 String我的控制器中的一个)
这就是我在的地方.
@Configuration
public class CustomWebConfiguration extends WebMvcConfigurationSupport {
//irrelevant code omitted
@Bean
public DomainClassConverter<?> domainClassConverter() {
DomainClassConverter<FormattingConversionService> dc = new DomainClassConverter<FormattingConversionService>(mvcConversionService());
return dc;
}
@Override
public void addFormatters(FormatterRegistry registry) {
registry.addConverter(String.class, Long.class, testConverter());
}
@Bean
Converter<String, Long> testConverter() {
return new Converter<String, Long>() {
@Override
public Long convert(String source) {
//this code does _not_ get run at any point
if (source.indexOf('/') == -1) …Run Code Online (Sandbox Code Playgroud) 继续使用Spring Data Rest.移动到2.4.0给了我更多我想要的行为,但现在我得到一个奇怪的间歇性异常.
关于...2/3当我重新加载或部署我的应用程序时,每个带有数据的SDR端点都会抛出500,并提供以下内容:
GET /api/departments
--------------------
HTTP Status 500 - Could not write content: org.springframework.data.rest.webmvc.json.PersistentEntityJackson2Module$ProjectionResourceContentSerializer
cannot be cast to com.fasterxml.jackson.databind.ser.impl.UnwrappingBeanSerializer
(through reference chain:
org.springframework.hateoas.PagedResources["_embedded"]
->java.util.UnmodifiableMap["departments"]
->java.util.ArrayList[0]
->org.springframework.data.rest.webmvc.json.ProjectionResource["content"]);
nested exception is com.fasterxml.jackson.databind.JsonMappingException:
org.springframework.data.rest.webmvc.json.PersistentEntityJackson2Module$ProjectionResourceContentSerializer
cannot be cast to com.fasterxml.jackson.databind.ser.impl.UnwrappingBeanSerializer
(through reference chain:
org.springframework.hateoas.PagedResources["_embedded"]
->java.util.UnmodifiableMap["departments"]
->java.util.ArrayList[0]
->org.springframework.data.rest.webmvc.json.ProjectionResource["content"])
Run Code Online (Sandbox Code Playgroud)
(提供完整的错误报告:http://pastebin.com/xzzXkFiR)
就像我说的那样,每次重新加载/部署应用程序时都不会发生这种情况,但是如果它发生了它就完全卡住了,重新加载是修复它的唯一方法.非常奇怪的行为,想知道是否有人有任何见解.
如果我回滚到Spring Data Rest 2.3.2,则不会出现问题
感谢您的帮助,请告诉我我可以提供的其他相关信息.
最新问题也发生(2.5.0 SNAPSHOT).
我正在编写一个单字段表单,希望Enter键将表单前进到下一个输入字段。由于页面上还有另一种形式,当该表单中的输入之一是时,我只希望按Enter键可以使该表单前进activeElement。
我已经在这里完成了一个极其冗长的if()声明:
document.addEventListener( 'keydown', function( ev ) {
var keyCode = ev.keyCode || ev.which;
var ids = [ 'this', 'that', 'there', 'thing', 'other' ];
if ( document.getElementById( ids[0] ) === document.activeElement || document.getElementById( ids[1] ) === document.activeElement || document.getElementById( ids[2] ) === document.activeElement || document.getElementById( ids[3] ) === document.activeElement || document.getElementById( ids[4] ) === document.activeElement) {
if( keyCode === 13 ) {
ev.preventDefault();
self._nextQuestion();
}
}
} );
Run Code Online (Sandbox Code Playgroud)
每个输入都属于同一类:.questions。我已经尝试过类似的东西:
document.addEventListener( 'keydown', function( ev ) …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 go 创建一个简单的 REST API 作为学习项目。has many我在尝试使用GORM 的预加载功能填充关系时遇到了障碍Joins。
据我所知,我已经正确设置了关系,表结构在数据库中看起来不错并且记录被插入,但是以下代码会产生错误:
panic: reflect: call of reflect.Value.Field on slice Value
Run Code Online (Sandbox Code Playgroud)
我在这里制作了一个最小的示例来显示我的问题
package main
import (
"log"
"gorm.io/driver/postgres"
"gorm.io/gorm"
)
type Page struct {
gorm.Model
Text string
BookID uint
}
type Book struct {
gorm.Model
Pages []Page
}
func main() {
db, err := gorm.Open(postgres.Open("postgres://postgres:password@host.docker.internal:5432/postgres"), &gorm.Config{})
if err != nil {
log.Fatal(err.Error())
}
db.AutoMigrate(&Book{})
db.AutoMigrate(&Page{})
db.Create(&Book{
Pages: []Page{
{Text: "Page One"},
},
})
result := []Book{}
// errors here
db.Joins("Pages").Find(&result) …Run Code Online (Sandbox Code Playgroud) 我正在看一个应用程序,我发现这个SQL:
DELETE FROM Phrase
WHERE Modified < (SELECT Modified FROM PhraseSource WHERE Id = Phrase.PhraseId)
Run Code Online (Sandbox Code Playgroud)
SQL的目的是从Phrase中删除行,其中PhraseSource表中有更多最近的行.
现在我知道表格Phrase和PhraseSource有相同的列,而Modified包含自1970年以来的秒数,但我无法理解这是如何/为什么这样做或者它在做什么.当我看着它时,似乎在<它只是一列的左侧,在>的右侧,它将是许多行.它甚至没有任何意义吗?
这两个表是相同的,具有以下结构
Id - GUID primary key
...
...
...
Modified int
Run Code Online (Sandbox Code Playgroud)
该...列包含文本和数字数据约十列.该PhraseSource表可能包含也可能不包含Modified列中具有更高编号的更新行以及不同的文本和数字数据.
我正在运行代码,但我似乎无法使扫描仪工作,任何人都知道如何?
public class verk34 {
public static void main(String[] args) {
System.out.println(Math.pow(x,2));
}
}
Run Code Online (Sandbox Code Playgroud)
事情就是在不改变代码的情况下自己插入数字.
x.name和imgname具有相同的类型(字符串)和相同的值“ comcardpro_capsule_model_2”。但是为什么findIndex()函数返回-1?请给我解释一下。
findPicture(imgname): number {
return this.info.comcardList.findIndex(x => {
x.name === imgname; // result in console:
console.log(imgname) // comcardpro_capsule_model_2
console.log(typeof imgname) // string
console.log(typeof x.name) // string
console.log(x.name); // comcardpro_capsule_model_2
})
}
Run Code Online (Sandbox Code Playgroud)
预期结果将是数组中元素的索引,而不是-1。
我在我的程序中找到了一个在线代码,但令我惊讶的是我发现有一个变量/函数声明了两次......
现在,如果我要向DLL发送任何值,我将发送信息到哪两个?一个用完,而第二个没用... 参见代码:
[DllImport("msman.dll", CallingConvention=CallingConvention.StdCall, CharSet=CharSet.Ansi, ExactSpelling=false)]
public static extern bool receive(int ID, double[] Bid, double[] Ask);
public bool receive(int ID, out double first, out double second)
{
bool flag;
double[] Array1st = new double[1];
double[] Array2nd = new double[1];
if (Form1.receive(ID, Array1st, Array2nd))
{
first = Array2nd[0];
second = Array1st[0];
flag = true;
}
else
{
second = 0;
first = 0;
flag = false;
}
return flag;
}
Run Code Online (Sandbox Code Playgroud)
而且,为什么可以声明两个变量..
我想检查一个数字(7)是否可以被另一个数字(5)整除,如果这个数字可以被这个数字整除,那么我需要返回相同的数字。如果该数字不能被另一个数字整除,我需要使其可整除并返回更新后的值。
var i =7;
if (i % 5 == 0) {
alert("divisible by 5");
} else {
alert("divisible not by 5");
}
Run Code Online (Sandbox Code Playgroud)
这里如果条件满足那么我需要返回相同的值。如果不满足条件,我需要添加所需的数字并使其下一个可整除。(就像 7 不能被 5 整除,所以我需要将 3 加到 7 并返回可以被 5 整除的值 10)。
是否有任何数学函数可以实现相同的功能?