小编ITW*_*ker的帖子

在spring boot JPA中,如何正确地将其实体表示具有外键关联的对象POST到另一个实体?

如果我有一个包含另一个类的对象的实体,例如其中包含a的Book实体Publisher如下关联实体:

@ManyToOne
@JoinColumn(name="PUB_CODE", referencedColumnName = "PUB_CODE")
private Publisher pub;
Run Code Online (Sandbox Code Playgroud)

这是一个安全/正确(我在这个例子中看到DB中的正确数据,但不是100%确定它是否适用于所有情况)方法在数据库中发布具有外键关联的对象?我不知道在事务原子性或线程方面是否安全,或者它是否有效.相关代码如下:

Book.java

package app.domain;

/*imports*/

@Entity
public class Book implements Serializable{

    /**
     * 
     */
    private static final long serialVersionUID = -6902184723423514234L;

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private long id;

    @Column(nullable = false, unique=true)
    private String bookName;

    @Column(nullable = false)
    private int pageCount;

    @ManyToOne
    @JoinColumn(name="PUB_CODE", referencedColumnName="PUB_CODE")
    private Publisher pub;


    /*public getters and setters*/

}
Run Code Online (Sandbox Code Playgroud)

Publisher.java

package app.domain;

/*imports*/

@Entity
public class Publisher implements Serializable {

    private static final long …
Run Code Online (Sandbox Code Playgroud)

java spring spring-data-jpa spring-data-rest spring-boot

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

ASP.NET MVC:如何在给定特定条件下默认页面?

我有一个名为的类PasswordChangeChecker.cs,它有一个从数据库返回的方法,无论用户是否更改了密码.该方法的签名是:

public bool IsPasswordChangedFromInitial(string IdOfUser)

IdOfUserIdentity框架用户的Id字段在哪里.如果返回true,则表示不应显示更改密码页面,否则应导航到更改密码表单.一旦用户成功更改了密码,数据库标志就会被正确设置,并且不会再次提示他们更改密码(除非管理员手动强制更改).如何将此方法放在RouteConfig.cs文件中,目前我所拥有的:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Routing;

    namespace IdentityDevelopment
    {
        public class RouteConfig
        {
            public static void RegisterRoutes(RouteCollection routes)
            {
                routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

                routes.MapRoute(
                    name: "Default",
                    url: "{controller}/{action}/{id}",
                    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
                );
            }
        }
}
Run Code Online (Sandbox Code Playgroud)

如何在defaults参数中添加条件构造,以便我可以使用该IsPasswordChangedFromInitial方法来决定是否转到密码更改页面?该页面位于/Account/ChangePassword.

编辑

根据评论,针对我的特定需求的相应操作方法是(我省略了不相关的代码):

登录发布动作:

[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Login(LoginModel details, string returnUrl)
            { …
Run Code Online (Sandbox Code Playgroud)

c# asp.net asp.net-mvc asp.net-identity

6
推荐指数
1
解决办法
975
查看次数

如何将模拟mvc GET调用映射到java POJO?

我有一个rest控制器方法,它返回一个对象CompositeObject,其中包含几个其他对象和结构(地图和列表).我想编写一个测试,测试其余的get调用是否返回该对象以及字段(即使这些字段的值为null),但我不知道如何映射下面的模拟mvc调用的响应:

String response = this.mockMvc.perform(get("/getclassdata?classCode=cs").accept("application/json"))
                .andExpect(status().isOk())
                .andReturn().getResponse().getContentAsString();
Run Code Online (Sandbox Code Playgroud)

此测试工作正常,但我想检查返回的JSON是否是我感兴趣的对象(CompositeObject),并确保它包含所有必需的字段.我该如何测试呢?测试框架中有类似的东西instanceof吗?

谢谢.

testing jackson spring-boot mockmvc

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

如何为 ActiveMQ 队列创建 Spring Boot 消费者?

我正在学习 ActiveMQ,到目前为止,我已经制作了一个简单的 Spring Boot 生产者+消费者应用程序(出于本问题的目的,将其称为App1),它与 ActiveMQ 的本地实例进行通信,一切都按预期工作。

现在我正在尝试运行一个不同的 Spring Boot 应用程序(在同一台计算机上,但在确保App1没有运行之后),该应用程序只有一个消费者(没有生产者),但是当我启动这个应用程序时,队列中的消息(我使用修改后的App1(其中我删除了应用程序的消费者部分)放置)不会被拾取。在App1中,消息一发布,消费者就会打印出 system.out 打印语句,但在这个仅限消费者的应用程序中并非如此。下面是我的监听器组件类:

package com.demo.listener;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jms.annotation.JmsListener;
import org.springframework.stereotype.Component;

@Component
public class Consumer {

    @JmsListener(destination = "testqueue")
    public void consume(String message) {

        System.out.println("Picked up message: " + message);

    }
}
Run Code Online (Sandbox Code Playgroud)

为了实现所需的行为,我需要做出哪些改变?

应用1 application.properties文件:

spring.activemq.in-memory=false
spring.activemq.pool.enabled=false
server.port=9000
activemq.broker-url=tcp://localhost:61616
spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration, org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration
security.basic.enabled=false
management.security.enabled=false
Run Code Online (Sandbox Code Playgroud)

App1 JmsConfig 类

import org.apache.activemq.ActiveMQConnectionFactory;
import org.apache.activemq.command.ActiveMQQueue;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jms.core.JmsTemplate;

@Configuration
public class …
Run Code Online (Sandbox Code Playgroud)

java activemq-classic spring-boot

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

MVC:如何从文件输入字段获取完整的文件路径?

我有以下剃刀代码:

  <div class="container">
        @Html.ValidationSummary(false)
        @using (Html.BeginForm("EncryptFile", "Encryption", new { returnUrl = Request.Url.AbsoluteUri }, FormMethod.Post, new { @id = "encryptionform", @class = "form-horizontal" }))
        {

            <div class="form-group">
                @Html.Label("File", new { @class = "control-label col-md-2" })
                <div class="col-md-10">
                    <input type="file" id="encryptfilefield" name="uploadedfile" enctype='multipart/form-data'/>
                </div>
            </div>


                    <button type="submit" id="encryptfilebutton">Encrypt</button>
                    <button id="decryptfilebutton" type="button">Decrypt</button>
                    <button id="reencryptfilebutton" type="button">Re-Encrypt</button>

        }
    </div>
Run Code Online (Sandbox Code Playgroud)

当我单击“加密”按钮时,将调用以下控制器代码:

  [HttpPost]
    public ActionResult EncryptFile(string uploadedfile)
    {
       /*process the file without uploading*/
      return Json(new { status = "success", message = "Encrypted!" });
    }
Run Code Online (Sandbox Code Playgroud)

当我单击加密按钮时,我可以执行此操作,但uploadedfile字符串始终以 …

html c# asp.net-mvc razor

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

如果用户已经登录,ASP.NET MVC Identity 如何防止登录?

我已经按照“Pro ASP.NET MVC 5 平台”一书第 13 章到第 15 章中描述的步骤实现了一个用户管理系统。这些章节的代码可以从 Apress 网站http://www 上免费下载。 apress.com/9781430265412。我知道这个问题可能最适合做过相同编码练习的人,但我希望他们和其他人可以帮助我解决这个问题。该系统基于.NET 平台的Identity 框架。我的问题是,对于按照本书的步骤设计的系统,我如何实现以下要求:

如果用户已登录,则不应允许他/她从其他浏览器登录,并应显示适当的消息。此外,即使未单击“注销”按钮,也应将关闭的浏览器视为已注销。实体框架或身份框架中是否有一些机制允许我在登录操作中检查用户当前是否在会话中进行了身份验证?

谢谢你。

.net asp.net authentication asp.net-mvc asp.net-identity

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

jQueryUI对话框替换确认?

我试图用jQueryUI对话框覆盖默认确认框,这是我的尝试:

window.confirm = function (message_confirm) {
        $(document.createElement('div'))
            .attr({ title: 'Please confirm', 'class': 'confirm', 'id': 'dialogconfirm' })
            .html(message_confirm)
            .dialog({
                buttons: { YES: function () { return true; }, NO: function () { $(this).dialog('close'); } },
                close: function () { $(this).remove(); },
                draggable: true,
                modal: true,
                resizable: false,
                width: 'auto',
                hide: { effect: "fade", duration: 300 },

            });

    };
Run Code Online (Sandbox Code Playgroud)

这适用于一旦运行此脚本,调用常规confirm显示jQueryUI对话框,但是,YES选择不起作用.我有一个像下面这样的ajax调用:

if (confirm("Are you sure you want to delete this user?"))
{
      alert("test");
     //ajax call
}
return false;
Run Code Online (Sandbox Code Playgroud)

并没有出现测试警报.对话框的NO选择工作正常.如何让YES工作? …

html javascript jquery jquery-ui

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