我正在尝试用 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导入)
我究竟做错了什么?
我正在尝试将二进制数据存储在 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.
OutputStream直接在 nt:file 节点上创建一个,就像一个FileOutputStream?OutpuStream转换为 a InputStream?我知道 Apache Commons 提供了另一种方法IOUtils.copy()。我见过一些关于 SO 的例子,他们只是使用来ByteArrayOutputStream.toByteArray()创建一个InputStream. 但由于数据可能变得相当大,这不是一个好的解决方案。此外,我尝试了它,但不知何故,流不完整,所以似乎存在缓冲区限制。下一个方法是使用管道流,但是我还有其他问题,我提出了另一个问题:Multiple Quotes Cause PipedOutputStream/OutputStreamWriter to failed
编辑:删除了 PipedStream 代码示例,因为我在另一个问题中发布了该问题。所以在这里我仍然只是在寻找一种简单的方法来创建 nt:file,其中输入不是InputStream.
Chrome我有一个 Java 微服务,可以使用 headless选项将 url 列表转换为 PDF --print-to-pdf。这在我的本地 Windows 上运行良好,在 ubuntu 服务器上它适用于拉丁字体。但是当我尝试在带有亚洲字体的网站上执行此操作时,它失败了。我假设服务器上只是缺少字体,但为了确定起见,我将它们安装到了/usr/local/share/fonts和 中。/usr/share/fonts我刷新了字体缓存fc-cache -f -v,然后重新启动了java服务。但它仍然不起作用。所以:
我正在尝试用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)我们有一个多站点设置,其中包含具有各自组和用户的单独内容树.严格执行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.这是关于我们特殊工作流程设置的综合问题.如果某位主持人认为我应该提出两个单独的问题,请告诉我.
目前,我的 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 自动获取来进行连接的。
最安全的方法是什么?
从 VueCLI 迁移到 Vite 后,据我所知,我必须“手动”进行 linting;如果我错了纠正我。因为我只想整理我的 .ts 和 .html 文件(我什至为组件将它们分开),我在我的包 json 中有这个脚本:
"lint": "eslint --ext .ts --ext .html src/"
它发现了一些问题,例如:key在循环中丢失,但它也向我显示了每个模板的这个错误:
错误清除 vue/注释指令
这始终是我的 template.html 中任何根元素的结束标记如果只有一个根元素,我会收到一个文件警告,如果有多个根元素,我会收到每个结束标签的警告。
我不明白这条规则抱怨的是什么,因为根据它的文档,它是用于 eslint-disable 注释的,我的模板中没有。
我们目前在高效的服务器上遇到了一些问题,因为它消耗的内存过多.其中一个漏洞可能来自球衣客户端.我发现了以下两个问题以及如何:
我从中获得了什么,我应该重用客户端,还可能重用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来防止上述示例的泄漏?
我在我的项目中使用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?
作为练习,我尝试在 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)
Run Code Online (Sandbox Code Playgroud)Property 'icon' does not exist on type 'Readonly<{ [x: number]: string; } & { length?: number | undefined; toString?: string | undefined; …
我今天开始了一个小型副项目(向经典的贪吃蛇游戏致敬),一切都工作正常,但 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