这是servlet中的代码:
HttpSession session = request.getSession(true);
session.setAttribute("user", user);
Run Code Online (Sandbox Code Playgroud)
我正在向JSP转发请求,我想检查是否附加了会话范围的用户参数.
<c:if test="${??? - check if user is attached to request}">
/ /message
</c:if>
Run Code Online (Sandbox Code Playgroud) 我正在寻找一种方法来验证ASP View页面上的两个字段.我知道验证表单字段的通常方法是@model ViewModel在页面上包含一些对象,其中此模型对象的属性将使用验证所需的适当注释进行注释.例如,注释可以是这样的:
[Required(ErrorMessage = "Please add the message")]
[Display(Name = "Message")]
Run Code Online (Sandbox Code Playgroud)
但是,在我的情况下,页面上没有包含模型,并且从表单调用的控制器操作接收平面字符串作为方法参数.这是表单代码:
@using (Html.BeginForm("InsertRssFeed", "Rss", FormMethod.Post, new { @id = "insertForm", @name = "insertForm" }))
{
<!-- inside this div goes entire form for adding rssFeed, or for editing it -->
...
<div class="form-group">
<label class="col-sm-2 control-label"> Name:</label>
<div class="col-sm-10">
<div class="controls">
@Html.Editor("Name", new { htmlAttributes = new { @class = "form-control", @id = "add_rssFeed_name" } })
</div>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label"> URL:</label>
<div …Run Code Online (Sandbox Code Playgroud) 我一直在努力使用 serilog 记录响应正文有效负载数据,从中间件记录。我工作的WEB API核心应用,与招摇添加到终点,我的目标是为每一个终点呼叫记录到一个以.json与文件serilog(请求和响应数据)。
对于GET请求,应记录响应正文(作为属性添加到 serilog 上下文),对于 POST 请求,应记录请求正文和响应正文。我创建了中间件并设法从请求和响应流中正确检索数据,并将其作为字符串获取,但只有“RequestBody”被正确记录。
调试时,我可以看到读取请求/响应正文工作正常。
以下是 Program->Main 方法的代码摘录:
Log.Logger = new LoggerConfiguration()
.ReadFrom.Configuration(configuration)
.Enrich.FromLogContext()
.CreateLogger();
Run Code Online (Sandbox Code Playgroud)
和中间件中的代码:
public async Task Invoke(HttpContext context)
{
// Read and log request body data
string requestBodyPayload = await ReadRequestBody(context.Request);
LogContext.PushProperty("RequestBody", requestBodyPayload);
// Read and log response body data
var originalBodyStream = context.Response.Body;
using (var responseBody = new MemoryStream())
{
context.Response.Body = responseBody;
await _next(context);
string responseBodyPayload = await …Run Code Online (Sandbox Code Playgroud) serilog asp.net-core asp.net-core-middleware asp.net-core-webapi
我正在寻找一种基于方法参数动态构建表达式的方法。
这是我的服务方法的代码片段,我想在其中构建谓词表达式。
public async Task<Account> GetCustomerAccountsAsync(Parameters params)
{
var items = await _unitOfWork.Accounts.GetWhereAsync(a => a.CustomerId == params.CustomerId && ... );
...
}
Run Code Online (Sandbox Code Playgroud)
GetWhereAsync是通用存储库中的一种方法,如下所示:
public async Task<IEnumerable<TEntity>> GetWhereAsync(Expression<Func<TEntity, bool>> predicate)
{
return await Context.Set<TEntity>().Where(predicate).ToListAsync();
}
Run Code Online (Sandbox Code Playgroud)
和参数类:
public class Parameters
{
public string CustomerId { get; set; }
public string AccountId { get; set; }
public string ProductId { get; set; }
public string CurrencyId { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我想要实现的是,每个非null 的Parameter对象属性都作为条件添加到表达式谓词中。
例如,如果CustomerId和AccountId …
我在使用JPA Criteria API构建查询时遇到问题.
实体和重要财产:
@Entity
public class Post {
@Id int id;
@OneToMany (mappedBy = "post") Set<Comment> comments;
//...
}
@Entity
public class Comment {
@Id int id;
@ManyToOne Post post;
//...
}
Run Code Online (Sandbox Code Playgroud)
我需要一个查询,它将返回按照注释数量(OneToManyin Post)排序的db中的所有帖子.起初我认为这可以用以下方式实现JPQL:
SELECT p
FROM Post p
ORDER BY SIZE(p.comments) DESC
Run Code Online (Sandbox Code Playgroud)
但功能SIZE(...)不能用它来订购JPQL.
所以,我找到了JPA Criteria API,并尝试了以下内容:
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Post> cq = cb.createQuery(Post.class);
Root<Post> p = cq.from(Post.class);
cq.select(p);
cq.orderBy(cb.desc(p.get("comments")));
List<Post> resultList = em.createQuery(cq).getResultList();
Run Code Online (Sandbox Code Playgroud)
有了这个查询,我没有得到正确的结果.我知道我错过size了设置'评论',但不知道如何添加该部分.我不是很熟悉 …
基本上,它类似于查找句子中是否存在某些单词。有实体帖子:
public class Post implements Serializable {
@Id
@GeneratedValue(strategy = IDENTITY)
@Column(name = "post_id", unique = true, nullable = false)
private Integer id;
@Column(name = "post_title", length=300, unique = false, nullable = false)
private String title;
@Column(name = "post_date", unique = false, nullable = false)
private Date date;
...}
Run Code Online (Sandbox Code Playgroud)
我正在尝试实现JPQL查询,该查询将搜索Post实体实例,这些实体实例byTitle在其title字段中具有某些单词/字符串(作为参数传递),以及两个以上Date类型的参数,分别代表日期范围- startDate和endDate。
我心里有这样的事情:
SELECT p FROM Post p WHERE :byTitle IN (set of strings created from parsing p.title …
MVC - servlet将请求转发给JSP.在servlet中我创建了类别的列表(java.util.List),将此列表附加到servlet上下文,并将请求转发到JSP页面:
public class Category{
private Integer id;
private String name;
private Category parentCategory;
...
//getters and setters
}
Run Code Online (Sandbox Code Playgroud)
此类表示类别/子类别(如果parentCategory字段为null,则它是顶级类别).具有相同父级的类别是其子类别,并且它们将映射到JSP中的嵌套无序列表.示例:结果应与下一个HTML代码类似:
<ul class="droprightMenu">
<li><a href="#">Category 1</a>
<ul class="droprightMenu">
<li><a href="#">Category 1.1</a></li>
<li><a href="#">Category 1.2</a></li>
<li><a href="#">Category 1.3</a></li>
<ul class="droprightMenu">
<li><a href="#">Category 1.3.1</a></li>
<li><a href="#">Category 1.3.2</a></li>
<li><a href="#">Category 1.3.3</a></li>
<li><a href="#">Category 1.3.4</a></li>
</ul>
<li><a href="#">Category 1.4</a></li>
</ul>
</li>
<li><a href="#">Category 2</a></li>
<li><a href="#">Category 3</a></li>
<ul class="droprightMenu">
<li><a href="#">Category 3.1</a></li>
<li><a href="#">Category 3.2</a></li>
<ul class="droprightMenu">
<li><a href="#">Category 3.2.1</a></li>
<li><a href="#">Category 3.2.2</a></li>
</ul> …Run Code Online (Sandbox Code Playgroud) HTML 表单外观:
<form action="search" id="searchForm" onsubmit="return validateSearch()">
<input type="text" name="byTitle" pattern="[a-zA-Z0-9]+" placeholder="Enter a word from title">
<input type="text" name="byAuthor" pattern="[a-zA-Z]+\s[a-zA-Z]+" placeholder="First-name Last-name"> <!-- pattern="\w+ \w+" -->
<input id="startDate" name="startDate" type="date">
<input id="endDate" name="endDate" type="date">
<input type="submit" name="submit" value="Submit">
</form>
Run Code Online (Sandbox Code Playgroud)
Javascript 验证功能:
function validateSearch() {
var byTitle = document.getElementById('searchForm').byTitle.value;
// alert(byTitle);
var byAuthor = document.getElementById('searchForm').byAuthor.value;
// alert(byAuthor);
var startDate = document.getElementById('searchForm').startDate.value;
//alert(startDate);
var endDate = document.getElementById('searchForm').endDate.value;
//alert(endDate);
if(byTitle == byAuthor == startDate == endDate == ""){
alert("Enter at least one search …Run Code Online (Sandbox Code Playgroud) 我知道在SO上有许多类似的问题 - 大多数都是指用servlet过滤器实现这个概念.
我使用基于表单的声明式安全方法.并且,当一些用户在登录表单上输入他(或她)的凭证(用户名和密码)时,他被重定向到某个/安全的jsp页面.该页面内容的一部分是:
Hello <%=request.getUserPrincipal().getName().toString()%>
You are able to view this page because you are authorized user.
Run Code Online (Sandbox Code Playgroud)
现在,如果用户已登录,我想显示他/她的用户名,无论是否有安全的jsp页面.像这样的东西:
<c:if test="${statement that checks if some user is logged in}">
User: ${username of the logged user here}
</c:if>
Run Code Online (Sandbox Code Playgroud)
编辑
我还想<%=request.getUserPrincipal().getName().toString()%>用适当的JSTL命令替换JSP scriptlet部分.
我使用MySQL Workbench - EER模型建模数据库.现在,我想移动某些实体,以便我可以将它们包装在单独的图层中,以获得更好的视觉效果.我的问题是我无法使用"点击并拖动"技术在EER图上移动实体.此外,我想选择一些区域,围绕某些实体并将它们放在图层中.选择"选择对象"(鼠标箭头)工具.
可能图表编辑器处于某种锁定模式吗?也许我按了一些快捷键或启用/禁用了一些选项,但我找不到在EER图上启用移动实体的位置.
感谢任何帮助.
编辑:我在Ubuntu Linux机器上使用MySQL Workbench制作了这个模型.在那里,我能够在图表上拖动实体.但是,现在我已经在我的其他计算机上打开了这个模型,我有Windows 7和最新的MySQL Workbench(6.1).这可能是个问题吗?因为Linux上的MySQL Workbench非常不稳定并且不时崩溃.