gpt4 book ai didi

search - 在 Play 的 CRUD 模块中自定义搜索功能

转载 作者:行者123 更新时间:2023-12-01 13:00:30 25 4
gpt4 key购买 nike

编辑:搜索似乎以非常基本的方式工作,搜索在相关模型的所有字符串成员字段中输入的任何文本,没有特殊的搜索运算符。

如果有什么方法可以自定义搜索的工作方式,我很想知道。现在看来,我只需要忽略内置的搜索功能并自己动手。


自从添加了 notes 字段后,它开始不返回任何内容,而是返回所有内容。到目前为止唯一有用的是在搜索框中输入“test”,它会在注释字段中返回带有“test”的记录。搜索“notes:test”或“notes=test”不起作用,也不会尝试搜索 agentstatus 字段。我已经尝试过诸如“1400”之类的值,这是我通过 phpMyAdmin 验证过的值存在于代理字段中,以及状态字段中诸如“0”或“VALID”之类的值,这是所有记录所具有的。

模型字段:

public class AgentShift extends Model {
public enum Status { VALID, RESCHEDULED, EXTENDED, DELETED } // REDUCED?

@Required @Min(1000) @Max(99999)
public int agent;
public Status status = Status.VALID;

@Required
@Columns(columns={@Column(name="start_time"),@Column(name="end_time")})
@Type(type="org.joda.time.contrib.hibernate.PersistentInterval")
public Interval scheduled;

@Type(type="org.joda.time.contrib.hibernate.PersistentLocalTimeAsTime")
public LocalTime agent_in;
@Type(type="org.joda.time.contrib.hibernate.PersistentLocalTimeAsTime")
public LocalTime agent_out;

public String notes;
}

修改后的crud列表页面:

#{extends 'main.html' /}
#{set title: 'Agent Shifts' /}

<div id="crudList" class="${type.name}">

<h2 id="crudListTitle">&{'crud.list.title', type.name}</h2>

<div id="crudListSearch">
#{crud.search /}
</div>

<div id="crudListTable">
#{crud.table fields:['id','agent','scheduled','status','notes'] }
#{crud.custom 'scheduled'}
#{if object.scheduled.getStart().toDateMidnight().equals(object.scheduled.getEnd().toDateMidnight())}
${org.joda.time.format.DateTimeFormat.forStyle("SS").printTo(out, object.scheduled.getStart())} to
${org.joda.time.format.DateTimeFormat.forStyle("-S").printTo(out, object.scheduled.getEnd())}
#{/if}
#{else}
${org.joda.time.format.DateTimeFormat.forStyle("SS").printTo(out, object.scheduled.getStart())} to
${org.joda.time.format.DateTimeFormat.forStyle("SS").printTo(out, object.scheduled.getEnd())}
#{/else}
#{/crud.custom}
*{
#{crud.custom 'entered_by'}
#{if object.entered_by}
${object.entered_by}
#{/if}
#{else} ?
#{/else}
#{/crud.custom}
#{crud.custom 'created'}
${org.joda.time.format.DateTimeFormat.forStyle("SS").printTo(out, object.created)}
#{/crud.custom}
}*
#{/crud.table}
</div>

<div id="crudListPagination">
#{crud.pagination /}
</div>

<p id="crudListAdd">
<a href="@{blank()}">&{'crud.add', type.modelName}</a>
</p>

</div>

最佳答案

Here您可以看到如何自定义 CRUD 页面,包括如何在屏幕中显示对象的某些字段。

搜索字符串应该采用以下格式:

 <field name>:<value>

例如:

name:Liam

该搜索将过滤名称中包含 Liam 的所有对象。字段名必须是列表页显示的字段。我不确定它是否适用于 @Lob,但通常这不是您想要在列表页面中显示的字段,因此这应该不是问题。

我不得不说,在 Play 1.1 中,我遇到了一些列的问题,其中开始搜索不起作用(引发错误),我无法解决。它似乎不会在 1.2.1 中发生(我不知道它是修复还是只是我在没有注意到的情况下所做的更改)

编辑:

关于更新的问题,列表页面似乎是正确的。

一个大胆的想法:您是否检查过数据库是否包含正确的列?我记得当我更改一些模型和一些未正确更新的列时,我遇到了一些 Hibernate 不公平的问题,导致奇怪的行为。完全移除表格并让 Play 重新创建它可能是值得的。

如果这不能解决问题,这很可能是 CRUD Controller 中的 Play 错误,您需要找到源头。

我首先关心的是缺少 Interval 上的 rel 注释,以及 LocalTime 和枚举 Status 的使用。这应该无关紧要,但是......恐怕我只能建议你做一个增量测试来定位问题:

  • 删除代理和注释以外的所有内容,然后尝试搜索。
  • 如果失败,请在 Play 的 Lighthouse 上提出错误因为它不应该
  • 如果有效,请继续一次添加一个字段并重新测试搜索。使用 Play 会很快,您可能会检测到导致问题的注释/字段并在 Play 的 Lighthouse 上报告

关于search - 在 Play 的 CRUD 模块中自定义搜索功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6311959/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com