我正在尝试在 Spring 中实现一个非常简单的自定义身份验证过程示例,以更好地理解该概念。
我以为我现在已经准备好了一切,但是发送一个请求来测试我在 NullPointerException 中实现的结果,可以追溯到 this.getAuthenticationManager()在我的自定义过滤器中返回 null。但我不明白为什么。不幸的是,非常相似的现有问题并没有真正帮助我。所以我会很感激你的帮助;这是我认为最相关的课程,请随时询问是否需要更多课程。
MyAuthenticationFilter(基于 UsernamePasswordAuthenticationFilter 的源代码),错误发生在最后一行:
public class MyAuthenticationFilter extends AbstractAuthenticationProcessingFilter {
public MyAuthenticationFilter() {
super(new AntPathRequestMatcher("/login", "POST"));
}
@Override
public Authentication attemptAuthentication(HttpServletRequest request, HttpServletResponse response) throws AuthenticationException {
if (!request.getMethod().equals("POST")) {
throw new AuthenticationServiceException(
"Authentication method not supported: " + request.getMethod());
}
String username = request.getParameter("username");
String password = request.getParameter("password");
String secondSecret = request.getParameter("secondSecret");
if (username == null) {
username = "";
}
if (password == null) {
password = "";
} …Run Code Online (Sandbox Code Playgroud) 我只想确保我正确地得到了这个信息,所以我会很感激您的答复。在我的configure-override中:
@Override
protected void configure(HttpSecurity http) throws Exception
{
http.
[...]
permitAll()
[...]
}
Run Code Online (Sandbox Code Playgroud)
所述permitAll()允许任何请求,而:
anonymous()
Run Code Online (Sandbox Code Playgroud)
将只授予那些用户访问不登录,但 在这两种情况下的HttpSession -object默认情况下创建。
那正确吗?
我对以下内容有点困惑,非常感谢您的帮助。
我想做的是实现一个通用的循环列表,我可以从外部访问节点(而不是它们的值)。我将尝试给出一个最小的设置来说明这一点。
class CircularList<T>{
Node<T> first;
/*Implementation details..., getters, setters */
public Node<T> getFirst(){ return this.first };
public class Node<U>{
/*...*/
}
}
Run Code Online (Sandbox Code Playgroud)
在另一个类中的用法:
CircularList<Vertex> vertices = new CircularList<>();
/*...*/
Node<Vertex> vertex = vertices.getFirst();
Run Code Online (Sandbox Code Playgroud)
在最后一行中,它说在原始类型上给出的类型参数,我不太明白。我不明白这怎么是原始类型。我通过 CircularList 的类型参数以及 getFirst 返回一个 Node 的事实认为该类型不会是原始的,但我显然是错误的。
今天我在尝试学习JavaFX和Java的更多内容时遇到了另一件我并不理解的事情.
参考是以下教程(我试图将原理应用于组织者):
我将简要介绍一下我有问题的特定部分:
我的主窗口包含一个tableview,显示一些约会数据.所以我得到了一些这种风格的线条(与教程中相同):
aColumn.setCellValueFactory(cellData ->cellData.getValue().getAColumnsProperty());
Run Code Online (Sandbox Code Playgroud)
可以通过额外的EditDialog操纵数据.这很好用.如果我编辑的东西,立即显示更改,但我做了一些额外的研究,以更好地了解Lambda(不太成功).现在......在线java文档Java Doc PropertyValueFactory中说:"Callback-Interface的一个便利实现,[...]"
所以我将我的代码重构为这种风格:
aColumn.setCellValueFactory(new PropertyValueFactory<Appointment,LocalDate>("date"));
Run Code Online (Sandbox Code Playgroud)
我发现它比Lambda更具可读性.但我注意到,当我进行更改时,我需要在显示更改之前对TableView进行一些排序.
是否有可能在第二种方法中立即显示变化?
如果是的话:是否存在阻碍这种修改的重大缺陷?也就是Lambda是这种情况下的最佳实践?
我感谢任何帮助.
我是仿制药的新手,当我试图在一个小程序中使用它们时遇到了以下问题,我将尝试提供必要的信息.
我会尝试只给出必要的但如果遗漏任何东西,请告诉我,我会提供所需的东西.
第一件事是以下界面:
1: public interface IPrice<T extends IPrice<T>> {
2: void setPriceToZero();
3: T addPrice(T price);
4: T subtractPrice(T price);
5: T multiplyPriceByFactor(int factor);
6: String priceToString();
7: }
Run Code Online (Sandbox Code Playgroud)
它由BnSPrice类实现; 这里可能是必要的一部分:
1: public class BnSPrice implements IPrice<BnSPrice> {
2: public BnSPrice subtractPrice(BnSPrice price) {...}
2: }
Run Code Online (Sandbox Code Playgroud)
现在这部分不会编译,我不明白:
1: public static void main(String[] args){
2: [...]
3: IPrice<? extends BnSPrice> test = new BnSPrice(5);
4: test.subtractPrice(new BnSPrice(5));
5: [...]
6: }
Run Code Online (Sandbox Code Playgroud)
我得到的是
"错误:(27,28)java:不兼容的类型:main.bnsCalculatorModel.BnSPrice>无法转换为捕获#1的?extends> main.bnsCalculatorModel.BnSPrice"
在我称之为减法方法的行中.
为什么会发生这种情况?如何更正此问题以便我仍然可以编程到界面?
(我的目标是将来用其他"种类的价格"扩展我的程序应该很容易.)
我希望对以下问题做出一些澄清:
我开始学习电子,并想建立一个小例子来测试需求机制。
文件夹结构如下:
main.js
node_modules
html
|-index.html
[...]
js
|-test.js
|-test2.js
Run Code Online (Sandbox Code Playgroud)
test2.js仅包含我导出的一个函数。
现在,从我在线阅读的内容中,require(...)应该可以解析相对路径,但是如果在test.js(用于index.html)中,则可以使用:
const aTest = require('./test2.js');
Run Code Online (Sandbox Code Playgroud)
产生一个找不到的模块,而:
const aTest = require('../js/test2.js');
Run Code Online (Sandbox Code Playgroud)
可以正常工作,我发现这很违反直觉,从SO和其他站点上阅读后,我认为第一个版本也应该工作。进一步测试(使用嵌套文件夹)表明该路径相对于node_modules。
-| EDIT(add):进一步的测试使我假设相对于html目录设置了路径。例如:
console.log(__dirname)
Run Code Online (Sandbox Code Playgroud)
在test.js中,将打印html目录的路径。|-
为什么会这样呢?我是否设置错误?
(PS:我发现了几篇文章,提供了有关避免../../../someModule的信息,但据我所知,所有文章都假设相对于所需文件而言是“路径”,因此这无助于我解决问题)
我正在尝试通过 ant 为一个小型测试项目生成一些 javadoc,但我并不真正理解它的所有行为。似乎我的主类中的很多方法都被遗漏了,我真的不明白为什么。
这是一个例子:
/**
* Diese Methode deligiert die Ausfuehrung der zustandsabhaengigen Aktion an die entsprechende Methode
* des Zustandsobjektes weiter, welches gerade in der Objektvariable zustand gespeichert ist.
* @see SetMinutes
* @see SetHours
* @see DisplayTime
*/
void inc(){
zustand = zustand.inc(this);
}
Run Code Online (Sandbox Code Playgroud)
这个没有显示。我的蚂蚁目标如下所示:
<target name="doc" depends="generateJar">
<javadoc destdir="${doc.dir}">
<fileset dir="."/>
</javadoc>
</target>
Run Code Online (Sandbox Code Playgroud)
唯一显示的方法是 main 方法(已记录)和 run() 方法(空)。让我想知道的是,项目其他类中的方法的文档是否正确生成,我看不出有什么区别。(我在生成字段摘要时也遇到问题,但这可能是另一个问题的内容,不是吗?)
任何帮助,将不胜感激。
我有一个tar.gz文件,其中包含大量的小型xml文件(略小于1.5m)(无子目录)。现在,我想遍历这些内容,并且尝试使用apache commons compress实现这一点。我不想像在类似主题中经常看到的那样将任何内容输出或写入新文件。我只想增量地读取信息(完美的是能够在某一点停止并继续执行程序的另一次运行,但这是次要的)。
所以对于初学者来说,我认为我应该从类似的东西开始(计数器只是为了测试而存在,以减少时间):
public static void readTar(String in) throws IOException {
try (TarArchiveInputStream tarArchiveInputStream =
new TarArchiveInputStream(
new BufferedInputStream(
new GzipCompressorInputStream(
new FileInputStream(in))))){
TarArchiveEntry entry;
int counter = 0;
while ((entry = tarArchiveInputStream.getNextTarEntry()) != null && counter < 1000) {
counter++;
System.out.println(entry.getFile());
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是entry.getFile()的结果始终为null,因此我无法使用其内容,而entry.getName()返回预期的结果。
如果有人能指出我的错误,我会很高兴。
我是bash脚本的新手,并且我正在尝试编写一个bash脚本的一些问题.请参阅以下代码段:
#!/bin/bash
year=`date +'%Y'`
holidaysXML=$(curl -H "Accept: application/xml" -H "Content-Type: application/xml" -X GET \http://www.spiketime.de/feiertagapi/feiertage/$year | xmllint --format -)
echo "$holidaysXML" | egrep "[0-9]{4}-[0-9]{2}-[0-9]{2}|>RP<"
Run Code Online (Sandbox Code Playgroud)
在这种形式中,echo所打印的内容与预期的一样,但是当我尝试将结果安全地保存到变量端回显变量时,似乎不执行egrep-part或根本不执行任何操作.
在阅读了一些其他主题之后,我已经尝试了以下内容:
test=$( "$holidaysXML" | egrep "[0-9]{4}-[0-9]{2}-[0-9]{2}|>RP<" )
Run Code Online (Sandbox Code Playgroud)
要么
test=`"$holidaysXML" | egrep "[0-9]{4}-[0-9]{2}-[0-9]{2}|>RP<"`
Run Code Online (Sandbox Code Playgroud)
两者都没有给出预期的结果(与第一个代码片段不同).谢谢你的任何建议.
我的问题与这篇文章类似:如何在不占用空间的情况下相对于另一个元素定位一个元素。
虽然我想要的并不完全是那里提出的。但到目前为止,这是我能找到的最接近的例子。
据我了解,在这个例子中,只有当检测到点击图标元素时,相关元素的位置才会更新。
但对于position:fixed,这意味着滚动不会改变位置。
我想要的是动态地移动相对定位的元素及其父级,同时它不占用其原始空间。(背景:我希望一些 submenu-item-div 出现在其父级之上。)因此结构类似于:
<div class="entry-options">
<div class="menu1"></div>
<div class="menu2">
<div class="submenu2"></div>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
submenu2 应位于条目选项(水平条)上方,而不更改其高度或宽度,这应仅由菜单* - 项目确定。
在不改变结构的情况下可以吗?