Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

建议 dynamicSizeOf 支持表达式 #39

Closed
FULaBUla opened this issue Nov 24, 2023 · 4 comments
Closed

建议 dynamicSizeOf 支持表达式 #39

FULaBUla opened this issue Nov 24, 2023 · 4 comments
Labels
enhancement New feature or request
Milestone

Comments

@FULaBUla
Copy link
Contributor

原先只考虑过长度是另一个属性的情况,所以直接指定对应的 order 即可拿到长度,但是如果长度被封在了一个 bean 里,那么直接指定 order 是那个封装的对象,长度在封装的对象里里面,也就没法取了

@MisterChangRay MisterChangRay added the enhancement New feature or request label Nov 24, 2023
@MisterChangRay
Copy link
Owner

这里这个如果要支持表达式那就要引入ognl包,感觉为了这个不值得引入另一个包。

所以我想的是有两种方案:

  • 设置一个属性,可以将类的order设置为全局,这样就可以取到了
  • 可以为每类设置一个基准order值,这样也可以访问到其他bean的属性

@MisterChangRay MisterChangRay added this to the V2.3.7 milestone Nov 24, 2023
@FULaBUla
Copy link
Contributor Author

确实,SPEL、OGNL、Groovy、JEXL、EL 这几种实现都需要引依赖。

我更倾向于第二种,感觉第一种会导致使用上混乱或者不灵活,不能配置多个。第二个的话,是不是这样实现,

@MagicClass
class A {

@MagicField(order = 1)
private int a;

@MagicField(order = 3)
private int length;

}

@MagicClass
class B {

@MagicField(order = 1)
private A a;

// 样式 1
@MagicField(order = 3, dynamicSizeof = 3, sizeFather = 1)
private byte[] data;

// 样式 2
@MagicField(order = 3, dynamicSizeof = 1.3)
private byte[] data;

}

@MisterChangRay
Copy link
Owner

现在已经实现并支持了。

废弃当前以orderrid作为引用,替换为以属性名为引用(支持相对引用和绝对引用)

可以直接以属性名引用当前同级或者下级所有属性,也支持以绝对引用(以根对象开始引用属性路径)

@FULaBUla
Copy link
Contributor Author

FULaBUla commented Dec 1, 2023

现在已经实现并支持了。

废弃当前以orderrid作为引用,替换为以属性名为引用(支持相对引用和绝对引用)

可以直接以属性名引用当前同级或者下级所有属性,也支持以绝对引用(以根对象开始引用属性路径)

旧的和新的使用方式是不是都存在比较好,否则这个对于已实现但想用新版本特性的代码改动量太大了吧

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

2 participants