小编Tho*_*mas的帖子

Vite 在 main.ts 中导入带有别名的 CSS

我正在尝试用 vite 替换 vue-cli 。我有一个 vite.config.js,所以我可以使用别名进行导入:

export default {
    alias: {
        '@': require('path').resolve(__dirname, 'src'),
    },
};
Run Code Online (Sandbox Code Playgroud)

然后在我的 main.ts 中我尝试导入我的 css 文件(我尝试过使用或不使用.module

import { createApp } from 'vue';
import App from './App.vue';
import router from './router';

import '@/assets/app.module.css';

createApp(App).use(router).mount('#app');
Run Code Online (Sandbox Code Playgroud)

但我收到这个错误:

[vite] 无法解析模块导入“@/assets/app.module.css”。(由/src/main.ts导入)

我究竟做错了什么?

typescript vue.js vuejs3 vite

12
推荐指数
3
解决办法
4万
查看次数

如何以编程方式编写 nt:file

我正在尝试将二进制数据存储在 JCR 中,这是动态创建的。我的问题是 JCR API 提供的唯一方法是通过InputStream

Session session = request.getResourceResolver().adaptTo(Session.class);
ValueFactory valueFactory = session.getValueFactory();
Binary bin = valueFactory.createBinary(is);
Run Code Online (Sandbox Code Playgroud)

由于 CQ/Sling 是 RESTful,我可以理解为什么会出现这种情况,因为您通常会收到一个表单帖子或一个到另一个源的 httprequest,您总是可以InputStream使用它。但就我而言,我正在动态创建二进制文件,它通常表示为OutputStream.

  1. 在 JCR API 中是否有其他我忽略的方法可以OutputStream直接在 nt:file 节点上创建一个,就像一个FileOutputStream
  2. 如果没有,是否有一种简单的方法可以将 aOutpuStream转换为 a InputStream

我知道 Apache Commons 提供了另一种方法IOUtils.copy()。我见过一些关于 SO 的例子,他们只是使用来ByteArrayOutputStream.toByteArray()创建一个InputStream. 但由于数据可能变得相当大,这不是一个好的解决方案。此外,我尝试了它,但不知何故,流不完整,所以似乎存在缓冲区限制。下一个方法是使用管道流,但是我还有其他问题,我提出了另一个问题:Multiple Quotes Cause PipedOutputStream/OutputStreamWriter to failed

编辑:删除了 PipedStream 代码示例,因为我在另一个问题中发布了该问题。所以在这里我仍然只是在寻找一种简单的方法来创建 nt:file,其中输入不是InputStream.

jcr aem

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

Headless Chrome --使用亚洲字体打印到 pdf

Chrome我有一个 Java 微服务,可以使用 headless选项将 url 列表转换为 PDF --print-to-pdf。这在我的本地 Windows 上运行良好,在 ubuntu 服务器上它适用于拉丁字体。但是当我尝试在带有亚洲字体的网站上执行此操作时,它失败了。我假设服务器上只是缺少字体,但为了确定起见,我将它们安装到了/usr/local/share/fonts和 中。/usr/share/fonts我刷新了字体缓存fc-cache -f -v,然后重新启动了java服务。但它仍然不起作用。所以:

  • 这是Java的问题吗?如何告诉 Java 采用这些字体(在 Windows 上似乎可行)
  • 这是 Chrome 的问题吗?例如,我是否必须以某种方式向进程提供字体?
  • 这是一个 ubuntu 问题吗:我是否需要以某种方式为运行该服务的用户安装字体?
  • 还有什么问题?

java pdf ubuntu fonts google-chrome

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

带有纯HTML和CSS(或带有最小JS)的家谱

我正在尝试用HTML和CSS建立家谱。我在codepen上找到了一个很好的例子。

作为一个家庭,不是简单的节点层次结构,而是有时是复杂的关系,因此我需要有多个几乎充当一个节点的节点。但是,让我们从最复杂的例子开始,以我的家庭为例,从祖母的母亲开始,从我的祖母开始:

  • 有我父亲是我母亲的前夫
  • 我妈妈又结婚了,所以我有了继父

因此,上方的基本节点是我的母亲,但是我和我的妹妹应该放在父亲的下方,因为我们与继父不相关。我试图在这里描绘这个: 家谱

这是我的标记和CSS(基于上面的Codepen示例):

/* Person */
.person {
	border: 1px solid black;
	padding: 10px;
	min-width: 150px;
	background-color: #FFFFFF;
	display: inline-block;
}

.person.female {
	border-color: #F45B69;
}

.person.male {
	border-color: #456990;
}

.person div {
	text-align: center;
}

.person .name {
	font-size: 16px;
}

.person .parentDrop, .person .spouseDrop, .person .childDrop {
	border: 1px dashed #000000;
	width: auto;
	min-width: 80px;
	min-height: 80px;
	display: inline-block;
	vertical-align: top;
	position: relative;
	padding-top: 15px;
}

.person .parentDrop>span,
.person .spouseDrop>span,
.person .childDrop>span …
Run Code Online (Sandbox Code Playgroud)

css tree

4
推荐指数
1
解决办法
6350
查看次数

适用于工作流程/激活的用户和通知

我们有一个多站点设置,其中包含具有各自组和用户的单独内容树.严格执行4眼原则,因此没有用户拥有复制权限.

CQ的限制是,如果没有复制权限的用户单击SiteAdmin或Sidekick中的激活按钮,则会触发默认激活请求工作流.这是硬编码的,不能改变; 同样适用于停用.所以我所做的就是创建一个自定义工作流程步骤,我将其作为默认工作流程中的唯一步骤.此自定义步骤检查工作负载项的路径,并触发此树的正确工作流.

第一个问题:当直接完成此步骤并触发新工作流程时,启动工作流程的用户立即获得工作流程已完成的消息.我可以以某种方式将第二个工作流程作为子任务,以便初始工作流程仅在子任务完成时完成吗?

第二个问题:树特定工作流程有一个批准者步骤,然后是自定义4眼检查步骤(如果最后修改的用户等于批准者,工作流程步骤返回批准者步骤并出现错误),最后一步是com.day.cq.wcm.workflow.process.ActivatePageProcess.但由于没有用户具有复制权限,因此未选中"复制为参与者"复选框.因此,每个页面有admin作为cq:lastReplicatedBy.是否有可能在没有他复制权的情况下设置批准者?

我们分叉工作流程的代码片段:

protected void processItem(WorkItem item, WorkflowSession wfSession, WorkflowData workflowData, String config) throws WorkflowException {
    ResourceResolver resolver = getResourceResolver();
    PageManager pm = resolver.adaptTo(PageManager.class);
    try {
        String path = workflowData.getPayload().toString();
        Page page = pm.getContainingPage(path);
        if (page != null) {
            //calculate the id of the correct model depending on page
            String wfid = getWfId(page);
            WorkflowModel mmodel = wfSession.getModel(wfId);
            wfSession.startWorkflow(model, workflowData);
        }
    } finally {
        closeResourceResolver(resolver);
        wfSession.terminateWorkflow(item.getWorkflow());
    }
}
Run Code Online (Sandbox Code Playgroud)

PS.这是关于我们特殊工作流程设置的综合问题.如果某位主持人认为我应该提出两个单独的问题,请告诉我.

workflow aem

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

Spring Data 从保险库或其他受保护的源读取 MongoDB 密码

目前,我的 spring-boot 应用程序无需凭据即可连接到本地 MongoDB。为了能够在客户处安装它,我需要提供使用用户名和密码进行数据库连接的功能。我正在使用 application.properties 文件,该文件当前仅包含与数据库相关的这 3 行:

spring.data.mongodb.host=localhost
spring.data.mongodb.port=27017
spring.data.mongodb.database=myApp
Run Code Online (Sandbox Code Playgroud)

还有另外两个:

spring.data.mongodb.username
spring.data.mongodb.password
Run Code Online (Sandbox Code Playgroud)

但当然,我不想在这个文件中使用纯文本形式的密码,或者更糟糕的是在我们的 git 中。一种选择是将它们作为启动脚本的参数提供,但它又可以在流程详细信息中作为纯文本读取。

我已经使用Jasypt在属性文件中看到了一些加密,但我不明白这种方法在我的情况下如何工作。我从未明确使用这些属性,因为它们是由 spring 自动获取来进行连接的。

最安全的方法是什么?

java security credentials spring-data-mongodb spring-boot

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

ESLint Vue 插件显示 vue/comment-directive 的误报

从 VueCLI 迁移到 Vite 后,据我所知,我必须“手动”进行 linting;如果我错了纠正我。因为我只想整理我的 .ts 和 .html 文件(我什至为组件将它们分开),我在我的包 json 中有这个脚本:

"lint": "eslint --ext .ts --ext .html src/"

它发现了一些问题,例如:key在循环中丢失,但它也向我显示了每个模板的这个错误:

错误清除 vue/注释指令

这始终是我的 template.html 中任何根元素的结束标记如果只有一个根元素,我会收到一个文件警告,如果有多个根元素,我会收到每个结束标签的警告。

我不明白这条规则抱怨的是什么,因为根据它的文档,它是用于 eslint-disable 注释的,我的模板中没有。

eslint vuejs3 vitejs

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

使用jersey的JAX RS的内存问题

我们目前在高效的服务器上遇到了一些问题,因为它消耗的内存过多.其中一个漏洞可能来自球衣客户端.我发现了以下两个问题以及如何:

  1. 如何正确共享JAX-RS 2.0客户端
  2. 关闭JAX RS客户端/响应
  3. https://blogs.oracle.com/japod/entry/how_to_use_jersey_client

我从中获得了什么,我应该重用客户端,还可能重用WebTargets?同时建议关闭响应,但是如何使用.request()执行此操作?

代码示例,使用不同的路径每小时调用大约1000次:

public byte[] getDocument(String path) {
    Client client = ClientBuilder.newClient();
    WebTarget target = client.target(config.getPublishHost() + path);
    try {
        byte[] bytes = target.request().get(byte[].class);
        LOGGER.debug("Document size in bytes: " + bytes.length);
        return bytes;
    } catch (ProcessingException e) {
        LOGGER.error(Constants.PROCESSING_ERROR, e);
        throw new FailureException(Constants.PROCESSING_ERROR, e);
    } catch (WebApplicationException e) {
        LOGGER.error(Constants.RESPONSE_ERROR, e);
        throw new FailureException(Constants.RESPONSE_ERROR, e);
    } finally {
        client.close();
    }
}
Run Code Online (Sandbox Code Playgroud)

所以我的问题是如何正确使用API​​来防止上述示例的泄漏?

java rest performance jersey java-memory-leaks

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

Lombok,Spring mongodb和jackson构造函数问题

我在我的项目中使用Spring Boot和lombok并遇到一些问题.我的班级看起来像这样:

import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
import lombok.Data;

@Data
@Document(collection = "elements")
public class ElementEntity {

    @Id
    private String id;
    // ...
}
Run Code Online (Sandbox Code Playgroud)

现在,如果我使用jackson ObjectMapper来创建我的ElementEntity,我会收到以下运行时错误:

com.fasterxml.jackson.databind.exc.InvalidDefinitionException:无法构造实例ElementEntity(没有Creator,如默认构造,存在):无法从Object值反序列化(没有基于委托或属性的Creator)

但是,如果我@NoArgsConstructor从lombok 添加,我得到以下编译错误:

[ERROR] ElementEntity.java:[11,1]构造函数ElementEntity()已经在ElementEntity类中定义

它似乎只@Document增加一个,但可能只有包可见性.有没有一种简单的方法可以解决这个问题,或者我必须手动为每个人添加一个public no args构造函数@Document

java jackson lombok spring-mongodb

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

具有多种类型的 Vue3 TypeScript 道具

作为练习,我尝试在 TypeScript 中定义FontAwesome Vue实现。它们允许icon道具具有不同的类型:

icon: {
    type: [Object, Array, String],
    required: true
},
Run Code Online (Sandbox Code Playgroud)

我试图给它添加一个验证,但props在设置中似乎坏了:

validator: (prop) => {
    if (typeof prop === 'object') {
        const obj = prop as any;
        return (obj.prefix && obj.iconName);
    } else if (Array.isArray(prop) && prop.length === 2) {
        return true;
    }
    return typeof prop === 'string';
}
Run Code Online (Sandbox Code Playgroud)
Property 'icon' does not exist on type 'Readonly<{ [x: number]: string; } & { length?: number | undefined; toString?: string | undefined; …
Run Code Online (Sandbox Code Playgroud)

typescript vue.js vuejs3 vue-composition-api

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

带有 Volar 扩展的 VS Code 显示错误,但 Vue3 应用程序按预期工作

我今天开始了一个小型副项目(向经典的贪吃蛇游戏致敬),一切都工作正常,但 VS Code 在 Vue 组件中显示两个错误,并且它似乎使用了过时版本的导入类和组件。

最初我从一个类开始,但后来我添加了一个实际上只公开公共属性(通过 getter 和 setter)和方法的接口。但是使用此类的组件仍然认为该类需要作为参数,并抱怨私有属性在该类型上不可用。

我不确定该错误是来自 VS Code 本身还是来自 Vue3 和 Typescript 推荐的 Volar 扩展。

该代码可作为公共 github 存储库提供: https: //github.com/onyx-blackbird/vue-snake/blob/master/src/components/GameGrid.vue 红色的行是:#23 和 #122写作时。如果我同时更新文件,这里有两行(在这两种情况下,snake 都是 ISnake,并且方法和组件都期望 ISnake):

const { food, placeFood } = useFood(maxX, maxY, snake);  

<SnakeFigure :snake="snake" :is-game-over="isGameOver"></SnakeFigure>
Run Code Online (Sandbox Code Playgroud)

这里引用的类和接口: https://github.com/onyx-blackbird/vue-snake/blob/master/src/model/Snake.ts

visual-studio-code vscode-extensions vuejs3 volar

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